MP4用软件压缩转换时把moov放在结尾,如果在前面,那么才可以边下边播
当然,如果用nginx自带的mp4模块播放时,会自动修改到前面。
另外ffmpeg最已经支持修改moov的命令,关键参数 -movflags faststart
ffmpeg -i old.mp4 -y -c:v copy -c:a libfdk_aac -movflags faststart new.mp4
ffmpeg –i old.mp4 –c copy –f mp4 –movflags faststart output.mp4
ffmpeg -i input.mp4 -movflags faststart -acodec copy -vcodec copy output.mp4
所以下面只是一个过时的备用方法
当然你也可以原文件进行修改。
需要的工具:
1.windows环境使用的开源ffmpeg静态编译版本
https://ffmpeg.zeranoe.com/builds/
下载statict版本(蓝色按钮Download Build)
解压即可使用
2.下载qt-faststart.exe,修复moov元数据到前面的工具
http://www.ckplayer.com/down/qt-faststart.rar
将qt-faststart.exe放至ffmpeg的bin文件夹。
开源:https://github.com/whatvn/qt-faststart
原理:
视频在moov段标记了元数据信息,正常位置在mdat(媒体内容)之前,
播放器解析时需要moov的信息,放前面比较好,否则,
要下载完所有才能取得moov
就没办法边下边播了。
打开cmd
执行
qt-faststart.exe d:\old.mp4 d:\new.mp4
即将old.mp4的moov标记移至mp4媒体之前,将文件复制至new.mp4
或者批处理
@echo off
start qt-faststart d:\old.mp4 d:\new.mp4
pause
或者批量处理
for /r "d:\media" %%a in (*.mp4) do d:\qt-faststart "%%~a" "D:\new\%%~nxa"
更新学习参考
https://blog.csdn.net/ai2000ai/article/details/84825214