ffmpeg - MP4 视频只有在 Jwplayer 上完全加载后才能播放

标签 ffmpeg mp4 h.264 jwplayer

这个问题在这里已经有了答案:





Post processing in ffmpeg to move 'moov atom' in MP4 files (qt-faststart)

(3 个回答)


3年前关闭。




嗨,最近我使用 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

最佳答案

发生这种情况是因为 mp4 格式的文件尾部有其 moov 信息。在逐步下载和播放文件之前,Flash 播放器需要该信息。因此,如果信息在文件末尾,则必须完全下载,这对于用户体验来说是很糟糕的。

根据您的回答,您可以编译 ffmpeg - qt-faststart 中提供的单独工具来对 mp4 文件进行后处理,然后将 mp4 文件用于视频流。

特别是,您可以下载一份 ffmpeg 的源代码副本,然后转到 tools 文件夹并运行:

make qt-faststart

然后你将在工具目录中有一个名为 qt-faststart 的工具。然后你可以运行:
qt-faststart input.mp4 output.mp4

并将 output.mp4 放到您的流媒体文件夹中,新的 mp4 文件将在播放时逐步下载。

或者,另一种选择是在之前的答案中建议的转码时间执行此操作,但是提供的命令行错误,应该是:
-movflags +faststart

在您的 ffmpeg 命令行中。它会做和你转码一样的事情。

所以有两个最简单的解决方案,希望好运!

关于ffmpeg - MP4 视频只有在 Jwplayer 上完全加载后才能播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26536816/

相关文章:

ios - 编码视频循环?

ffmpeg - 为 av_read_frame 设置超时

iOS:AVPlayer 显示黑屏并且无法播放某些 mp4 视频

python - Python 中的高性能视频编辑

Qt - 使用 FFmpeg 库的 H.264 视频流

javascript - 为什么此用户代理 JavaScript 无法正确检测到 Opera?

image - 如何使用ffmpeg在视频帧的特定位置添加图像

ffmpeg - 是否有任何 Vlc Library(.dll) 视频流容量?

ffmpeg - 使用 FFmpeg 堆叠 gif 而不会降低质量

php - Chrome 不能快进,Firefox 可以。用 PHP 显示 MP4 文件