近幾天在研究 Live555 並使用 testProgs 中的 Server 及 playCommon,分別生成 Live555Server.exe 及 playCommon.exe,它們的功能分別是生成建立 RTSP 服務器和接收並保存服務器中的流文件。
博主: http://my.csdn.net/keith_cheung
源碼: http://www.live555.com/liveMedia/
(備註:Live555 Version 0.83, released Jul 18, 2014, Visual Studio 2012 )
但在二者編譯前,我分別先生成了以下四個庫,以供後面使用:
參考Live555編譯實現過程(我按最後一種方案) : http://blog.csdn.net/ying66feng/article/details/19477731
1. BasicUsageEnvironment.lib
2. groupsock.lib
3. liveMedia.lib
4. UsageEnvironment.lib
另外,
A. 頭文件一般要包含,請自行按自己工程目錄進行設定或調整:
( 屬性 -> 配置屬性 -> C/C++ -> 常規 ->附加包含目錄 )
$(SolutionDir)\BasicUsageEnvironment\include
$(SolutionDir)\groupsock\include
$(SolutionDir)\liveMedia\include
$(SolutionDir)\UsageEnvironment\include
B. 庫引用路徑 :
(屬性 -> 配置屬性 -> 鏈接器 -> 常規 -> 附加庫目錄)
$(SolutionDir)\Live555\Release
或
$(SolutionDir)\Live555\Debug
Cpp 或 頭文件 中,需加入庫引用:
#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "BasicUsageEnvironment.lib")
#pragma comment (lib, "groupsock.lib")
#pragma comment (lib, "liveMedia.lib")
#pragma comment (lib, "UsageEnvironment.lib")
一,Live555Server.exe 的生成
A. 新建C++空項目,並分別在源文件和頭文件中加入
1. DynamicRTSPServer.cpp
2. DynamicRTSPServer.hh
3. Live555Server.cpp
B. 複製上述四個庫及相關源碼到工程中,並按上面 附加好頭文件及庫文件。
C. 屬性->配置->C/C++ -> 命令行中,加上 /D _CRT_SECURE_NO_WARNINGS
D. 編譯即可。
二,playCommon.exe 的生成
A. 新建C++空項目,並分別在源文件和頭文件中加入
1. openRTSP.cpp
2. playCommon.hh
3. playCommon.cpp
B. 複製上述四個庫及相關源碼到工程中,並按上面 附加好頭文件及庫文件。
C. 屬性->配置->C/C++ -> 命令行中,加上 /D _CRT_SECURE_NO_WARNINGS
D. 編譯即可。
三,服務器及傳送測試
A. Live555Server.exe 可以支持 H.264, H.265(HEVC), KMV 等通用格式,請將 此類文件與 Live555Server.exe 放在同一目錄下,運行 Live555Server.exe 即可。
B. 而接收:playCommon.exe rtsp://192.168.1.131/test.265 (假如你運行 服務器的 IP : 192.168.1.131 ,而文件名是 : test.265)
C. playCommon.exe 目錄下,將會收到生成一個: video-H265-1 文件,這樣,你就可以直接播放它了。
四,注意事項目
因爲現在的 H.265 fileSinkBufferSize = 100000,對於一些大幀來說,這個 buff 不夠大,我現在需要將它設成 160000 或更大的。
我現在改動了以下地方( 從100000 -> 160000 ):
A. Live555 四個庫:
H265VideoFileSink.hh 的 unsigned bufferSize =160000,
B1 . playCommon.exe :
playCommon.cpp 的 unsigned fileSinkBufferSize =160000;//100000
B2. Live555Server.exe :
DynamicRTSPServer.cpp 的 OutPacketBuffer::maxSize =160000; // allow for some possibly large H.265 frames