您好我最近使用FFMpeg将一些视频转换为MP4但是当我尝试流式传输此视频文件时,播放器需要完全加载文件,直到它开始播放,我试图找到一种方法让它开始从一开始就播放文件并继续加载。 我正在使用此FFMpeg命令进行转换:
ffmpeg -i input.mp4 -vcodec libx264 -vpre default -crf 28 -ac 1 -ar 44100 -b 284k -ab 70k -r 15 -s 640x360 output.mp4 2>&1
答案 0 :(得分:4)
这种情况正在发生,因为mp4格式在文件的尾部有moov信息。在逐步下载和播放文件之前,闪存播放器需要该信息。因此,如果信息位于文件末尾,则必须完全下载,这非常糟糕,用户体验方面。
根据你的回答,你可以编译一个单独的工具,在ffmpeg -qt-faststart中提供后处理mp4文件,然后使用mp4文件进行视频流。
特别是,您可以下载ffmpeg的源代码副本,然后转到tools文件夹并运行:
make qt-faststart
然后你将在tools目录中找到一个名为qt-faststart的工具。然后你可以运行:
qt-faststart input.mp4 output.mp4
并将output.mp4放入您的流媒体文件夹,并在播放时逐步下载新的mp4文件。
或者另一种选择是在转码时间内执行此操作,如前面的答案所示,但命令行提供错误,应该是:
-movflags +faststart
在你的ffmpeg命令行中。它将与转码相同。
所以你有两个最简单的解决方案,祝你好运!
答案 1 :(得分:2)
对于流式传输,moov原子需要位于文件的开头,而不是结尾。对于ffmpeg,请尝试添加:
-movflags faststart
答案 2 :(得分:0)
您始终可以使用此工具进行测试 - http://renaun.com/blog/2010/06/qtindexswapper-2/