本次测试软件环境:Intel Celeron双核 2.60 Ghz CPU; 4GB 内存;安装 Ubuntu 13.04
hzsx@hzsx-server:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 13.04
***
hzsx@hzsx-server:~$ uname -a
Linux hzsx-server 3.8.0-35-generic #50-Ubuntu SMP Tue Dec 3 01:25:33 UTC 2013 i686 i686 i686 GNU/Linux
hzsx@hzsx-server:~$ cat /proc/cpuinfo
***
model name : Intel(R) Celeron(R) CPU G1610 @ 2.60GHz
***
cpu MHz : 1600.000
cache size : 2048 KB
265编码器 http://x265.org/
测试序列下载地址 ftp://ftp.ldv.ei.tum.de/videolab/public/SVT_Test_Set/720p/ 720p50_parkrun_ter.yuv 和 720p50_shields_ter.yuv
从http://x265.org/下载源码编译出可执行265,查看编码效率。
发现暂时还不能用于产品。
本次测试使用了两个720P 504帧的YUV序列。压缩时间均超过2分钟。这才20秒的视频而已。
encoded 504 frames in 119.35s (4.22 fps), 525.44 kb/s // 720p50_parkrun_ter.yuv
encoded 504 frames in 124.79s (4.04 fps), 503.96 kb/s // 720p50_shields_ter.yuv
一下是对比ffmpeg和libx264编码时间。
720p50_xxx_1280x720.yuv --->>> 720p50_xxx_.h264
ffmpeg 采用gusari已经编译好的 http://ffmpeg.gusari.org/static/32bit/ ffmpeg.static.32bit.2014-04-18.tar.gz
采用2014.4.18 版本是为了和 libx264 对应
./ffmpeg -s 1280x720 -i ~/multimedia/720p50_shields_ter_1280x720.yuv -r 25 -vcodec libx264 -b 800000 ~/multimedia/720p50_shields_ter_ffmpeg_800k.h264
-b 800000 代表 800k bitrate
libx264 采用 官网 x264-snapshot-20140420-2245.tar.gz 自编译
./x264 --bitrate 800 --fps 25 --output ~/multimedia/720p50_shields_ter_libx264_800k.h264 ~/multimedia/720p50_shields_ter_1280x720.yuv
--bitrate 800 代表 800k bitrate 。 和ffmpeg命令不同,这里是以k为单位。
这里之所以没有添加参数 1280:720,后面解释。
视频序列 720p50_parkrun_ter_1280x720.yuv 记作 p ; 720p50_shields_ter_1280x720.yuv 记作 s ;
对比一下时间消耗
首先,使用ffmpeg编码对应的时间消耗
bitrate 800k 5000k 8000k
时间消耗 p16s|s17s p27s|s33s p32s|s39s
然后,使用libx264编码对应的时间消耗
bitrate 800k 5000k 8000k
时间消耗 p16s|s17s p27s|s33s p32s|s39s
从时间消耗上来说,基本上是一样的。
最后解释一下,libx264参数设置中,如果添加了 --sar 1280:720
得到的H264视频文件,使用mediainfo查一下就会发现,Display aspect ratio : 3.160 。
申明,这里的yuv序列不包含任何其他信息,仅仅是颜色yuv值。
这是因为我yuv文件的命名,后缀前给出了分辨率1280x720,libx264会自动判断分辨率。
如果添加了--sar 1280:720,导致编码后再次缩放比例1280:720,即是(1280:720)*(1280:720) = 3.16