近几天在研究 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