最近在研究FFmpeg编解码
好几年没上CNBLOGS了,
最近在研究FFmpeg编解码,一个人研究感到很寂寞,所以想通过博客来和大家分享和交流,呵呵。
最近研究的主题是: ANDROID手机同屏技术:
需要用到ANDROID截屏,然后通过FFmpeg将BMP编码成H264,然后通过RTP协议发送出去。接收端为手机,要求延时小,清晰流畅,并且手机还可以反控ANDROID主机。
我的想法是先在VS2010上将整个原理通路打通,先在PC上调试和DEMO,然后再移植。直接进行ANDROID的NDK编程,那个开发效率和调试效率太低啦。
目前的进展:基于VS2010
可以连续截屏,并且还可以将截屏的N张BMP图片通过FFmpeg编码成H264.
还需解决的问题:
1. 内存泄漏。(头大,C++程序员的永久之痛!)
2.发现FFmpeg的编码效率不太高,编码慢,只能基本满足15帧每秒。如果移植到ARM平台,由于CPU资源有限,恐怕效率更低。如果实在不能解决,到时候再考虑利用ARM的H264硬件H264编码.
3. 现在是截屏的BMP分辨率是1920*1080,编码产生的H264文件的分辨率也是1920*1080,想缩放成1280*720,这样通过RTP传送时,占用带宽少。
这个问题通过SWC_SCALE函数应该好解决。
目前流程:
截屏,保存为若干个BMP文件---->RGB转YUV420P-----FFmpeg编码-------->H264文件。