移动设备上的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 编码后的文件读取信息看看
1 |
Encoding settings : cabac=1 / ref=1 / deblock=1:0:0 / analyse=0x1:0x1 / me=dia / subme=1 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=1 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=1 / keyint=250 / keyint_min=15 / scenecut=40 / intra_refresh=0 / rc=crf / mbtree=0 / crf=23.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / pb_ratio=1.30 / aq=1:1.00 |
可以看出,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编码实时视频参数设置与优化
你好,可以 在分享一下 用到的样例文件及编码后的文件,点此下载这个文件么??谢谢额
不好意思,太久了,没找着。
好几年前就看过你的博客,现在又在弄,回来看了,很给力,谢谢了。