mp4文件录制的时候,先写mdat atom对应的音视频数据,最后在尾部写上moov atom对应的一些索引信息。一些软件在录制后会再处理一次,把moov atom的位置搬到文件的前面,而把mdat atom的位置搬到文件的最后。遗憾的是,用ffmpeg转码或转封装后,默认都没有这样的过程,结果就可能导致在网页端播放的时候出来慢(有些播放器不会跳转读取文件,只是顺序下载整个文件的,就有这种问题)。好在可以在生成mp4文件前,使用一个选项 -movflags faststart 解决这种问题,如果moov不位于文件的前面,可以像下面这样转一下就可以了。
ffmpeg -i 123.mp4 -codec copy -movflags faststart 456.mp4