Librtmp 目前依赖的库有zlib-1.2.8 和polarssl-1.2.0-gpl
1.编译 zlib-1.2.8, 官网:http://zlib.net
2.下载librtmp源码trmpdump-2.3.tgz
下载链接:http://rtmpdump.mplayerhq.hu/download/
3.编译librtmp的依赖库zlib和openSSL
本文主要想说明如何搭建环境编译librtmp,zlib和openSSL的编译过程略,网上有两者已经编译好的头文件和静态库,自己动手编译也可以。
二.开始编译
1.新建VS2013的其它项目类型->空白解决方案,用来管理后面多个项目,如下图所示

2.然后右键刚刚新建的解决方案,添加项目:

3.新建VS2013的Win32控制台应用程序,如下图所示

选择“静态库”,并取消“预编译头”,如下图所示。

2.解压trmpdump-2.3.tgz并将其中的librtmp文件夹拷贝到刚刚新建的\librtmpWindows目录下,然后将librtmp中的.h和.c文件添加到项目中。


3.在librtmpWindows项目中新建include和lib文件夹,然后分别拷入zlib和openSSL的头文件和静态库文件,如下图所示。


将头文件和库文件目录添加到项目中,最好使用相对路径,这样的话项目换到其他目录也不影响编译。需要注意的是,相对路径是相对于项目文件.vcxproj的



4.编译遇到一些错误,大多数是vs的一些函数跟标准C函数有点区别,改成vs的函数基本即可。
再次编译,错误消失,在librtmpWindows\Release(先将工程设置为release)目录下可以看到生成的静态库librtmpWindows.lib。
三:建立测试工程推流;
-
在新建的解决方案上再新建一个新的项目,参考上面步骤,但是这次不是生成静态库,是普通的win32控制台。
image.png
image.png
编译虽然无错了,但是新建测试工程simplest_librtmp_send_flv(Win32控制台应用程序),调用librtmpWindows.lib库时却会再次出现错误,错误提示如下图所示。
image.png
第一条错误与librtmpWindows库无关,需在测试工程中加入winmm.lib,ws2_32.lib库(winsock相关)。
其余三条错误需返回librtmpWindows工程,打开rtmp_sys.h文件,做如下修改。

编译测试工程(release版本),正常推流

四:注意点:
以下copy自网上,自己还没遇到,后续有时间再参考测试:
注意如果此时将librtmpWindows工程设置为debug,编译不会出错,但是用测试工程调用时,会出现如下图所示错误。

这两条错误需返回librtmpWindows工程,打开rtmp.c文件,将如下三个地方注释掉



重新编译librtmpWindows工程。
重新编译simplest_librtmp_send_flv工程,错误消失。
目前遇到的就是如果把librtmpWindows工程打开为DEBUG模式,这样编译出来的库,测试工程不能用,连接不上服务器,具体原因还没时间排查,目前是用release版本。
网友评论