Android,IOS平台上x264编码实时视频参数设置与优化

移动设备上的H.264实时视频编码,需要考虑到cpu占用与带宽这2个限制因素,使用X264软编码,开启neon指令集优化,即使是在arm处理器下,依然可以通过优化配置达到满意的性能.
以下测试环境 一段352×288@15fps的视频,模拟摄像头采集到的数据。ipod touch4 和昨天编译出的X264:
Touch-future:~ root# ./x264 -o video_1.h264 video_1.y4m –profile baseline –preset ultrafast –fps 15

baseline
ultrafast
encoded 467 frames, 48.17 fps, 865.45 kb/s 3368054(压缩后的文件大小,单位字节)

superfast
encoded 467 frames, 39.33 fps, 640.36 kb/s 2492070

veryfast
encoded 467 frames, 28.43 fps, 535.28 kb/s 2083132

fast
encoded 467 frames, 10.41 fps, 542.16 kb/s 2109913

main
ultrafast
encoded 467 frames, 42.79 fps, 865.45 kb/s 3368054 B-frames: 0% (ultrafast 下不支持b帧编码)

superfast
encoded 467 frames, 31.94 fps, 608.48 kb/s 2367992 B-frames: 32.3%

veryfast main
encoded 467 frames, 22.88 fps, 480.83 kb/s 1871246 B-frames: 34.9%

使用main profile, 增加B帧的支持并没有显著的减少码流,同时性能损失也比较明显,

取一个superfast main 编码后的文件读取信息看看

可以看出,x264默认是使用”crf”压缩算法,质量为23. 作为默认值,一般代表了编码速度,画质与码流的均衡.

而我们移动设备实时视频编码应用的场景,更多侧重于优化编码速度与码流上.

ultrafast baseline crf 28
encoded 467 frames, 58.94 fps, 515.58 kb/s 2006474

superfast baseline crf 26
encoded 467 frames, 41.73 fps, 460.02 kb/s 1790244

superfast baseline crf 28
encoded 467 frames, 43.64 fps, 366.28 kb/s 1425436

如何取舍,就看各位的需求啦.
用到的样例文件及编码后的文件,点此下载

参考:
http://slhck.info/crf.html
http://hi.baidu.com/dmoekun/item/5082ea721b36df1cd1dcb30a
http://forum.doom9.org/showthread.php?t=154991

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: Android,IOS平台上x264编码实时视频参数设置与优化

6 评论

  1. 好几年前就看过你的博客,现在又在弄,回来看了,很给力,谢谢了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据