众所周知,Apple的Darwin Streaming Server流媒体服务器,只能播放hint后的mp4文件,因此离不开hint工具。能用于hint的工具包括:MP4Box和mp4creator
MP4Box语法:
MP4Box -hint xxx.mp4
mp4creator语法:
mp4creator -hint=1 xxx.mp4
mp4creator -hint=2 xxx.mp4
最近在做流媒体服务器,通过实践,发现mp4creator对很多mp4文件无能为力,报错:
MP4ERROR: MP4Array::[]: index xxx of xx: Numerical result out of range
mp4creator: error hinting track 1
但同时使用MP4Box却非常正常。
附上CentOS 5下编译gpac(编译后会包含有MP4Box)的文字:
(摘自chinaunix博客http://blog.chinaunix.net/uid-10697776-id-2935583.html)
yum -y install freeglut
yum -y install freeglut-devel
wget http://downloads.sourceforge.net/gpac/gpac-0.5.0.tar.gz
wget http://downloads.sourceforge.net/gpac/gpac_extra_libs-0.4.5.tar.gz
tar zxvf gpac-0.5.0.tar.gz
tar zxvf gpac_extra_libs-0.4.5.tar.gz
cd gpac
cp -r ../gpac_extra_libs/* extra_lib/
chmod +x configure
./configure
make
make lib
make apps
make install
whereis MP4Box
最后,分享一条很实用的经验,对于一些DVD格式的片源(mp4 h264,非avc1格式), MP4Box也会失败,报错:
Hinting file with Path-MTU 1450 Bytes
Cannot create hinter (Feature Not Supported)
Error: Feature Not Supported
解决方法如下,利用ffmpeg进行快速转码(视频音频参数都是拷贝: -vcodec copy -acodec copy),把转码后的mp4文件再用MP4Box hint即可:
ffmpeg -i xxx.mp4 -vcodec copy -acodec copy xxx_new.mp4
MP4Box -hint xxx_new.mp4