前段时间要开发一个RTMP的客户端,就是将采集到的视频数据进行H264编码,音频数据进行AAC编码,然后发送给RTMP服务器,如CRtmpServer,Nginx,FMS等,前端就可以使用Flash,或者是HTML5收看视频,简单快捷,不需要安装播件,还可以跨平台。
上网查了很多资料,都是要研究RTMP协议。
由于时间太紧,没有办法仔细研究,琢磨FFMPEG有没有可能封装类似代码,后来一查,果然封装了librtmp库,看来可以通过简单的办法实现了。
最主要的代码是以下一句
avformat_alloc_output_context2(&m_pFormatContext, NULL, "flv", NULL);
然后在avio_open里打那相应的URL,比如rtmp://127.0.0.1/live/livestream
后面的就简单了,创建Video的Codec,Audio的Codec,然后写入相应的数据就行了,这些代码和普通的用ffmpeg写文件流程一样。
如果也有研究这方面的朋友,可以联系我一起研究。