要开发一个Rtmp协议的推流工具,目前用以下几种实现方案
- 使用ffmpeg方案,ffmpeg本身功能非常丰富,如果采用这个方案,基本上所有功能都可以搞定,不用再引入其它的第三方库,而且还支持跨平台。要使用ffmpeg推流,编译时一定要把x264,libfaac,rtmp协议打进去,编译出来的so,dll大概2M多一点。ffmpeg推流方案实现起来开发速度比较快,缺点就是好多地方都是黑盒,细节不好控制。
- 使用x264+libfaac+librtmp方案,使用这个方案,自己要实现的的地方比较多。音频,视频采集都要自己来实现。x264,faac编码参数都可以自己定制,时间戳,推流缓冲区控制等细节都要完全自己实现。难度比上一种要大一点,但是自己可以控制的细节比较多,比较灵活。
- 在第二种的基础上把rtmp协议库换成srs-rtmp,大体流程和第二种很类似。我们在使用过程中发现srs-rtmp比librtmp接口封装的更合理点,而且srs-rtmp库只是一个单文件,完全可以放到自己的工种中去,不用单独把rtmp库编译成一个静态库或者动态库。