我们运行视频服务,将电影流式传输到智能手机(iOS&Android)。我们使用H.264 + AAC编码,并使用mp4容器。我们有一个问题,即长电影(超过60分钟)需要很长的时间才能开始播放,并且已经跟踪到这些电影的Moov原子很大。对于110分钟的电影,原子大小高达4.2Mb,这显然需要很长时间才能通过3G下载到智能手机!
无论如何,可以使moov原子变小吗?我们可以通过降低音频采样率来降低比特率,但是显然任何低于22kHz的东西都是不可接受的。
我们使用ffmpeg作为编码器,并使用MP4Box将元数据移动到文件的开头。有没有办法使它变小?还有其他编码器可以使运动幅度减小吗?
例如...
大(280 Mb,1h 49min)可流mp4(h.264,AAC)文件的标头大(4.2 Mb)。通过两次传递ffmpeg和MP4Box对文件进行编码,以将元数据替换为文件的开头:
/usr/bin/ffmpeg -i /var/lib/encoder/incoming/2388 -aspect 320:210 -threads 8 -vcodec libx264 -profile baseline -level 13 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 0 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 -b:v 270k -maxrate 270k -bufsize 270k -g 30 -passlogfile /tmp/mediaservice/3100/video-IPH.ffmpeg -an -f rawvideo -pass 1 -y /dev/null
/usr/bin/ffmpeg -i /var/lib/encoder/incoming/2388 -aspect 320:210 -threads 8 -vcodec …Run Code Online (Sandbox Code Playgroud)