【问题标题】:MP4 Videos are playing only after fully loaded on Jwplayer [duplicate]MP4 视频只有在 Jwplayer 上完全加载后才能播放 [重复]
【发布时间】:2014-12-19 15:16:09
【问题描述】:

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

【问题讨论】:

    标签: ffmpeg mp4 h.264 jwplayer


    【解决方案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 命令行中。它会做和你转码一样的事情。

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

    【讨论】:

    • 我正在使用 MP4Box,现在可以正常使用了。
    • 嗯,是的,MP4Box 也可以做到这一点,在相同的机制下,以及其他一些软件也是如此。以为您在寻找 ffmpeg 解决方案。
    • 是 @JasonYang 我正在寻找 ffmpeg 解决方案,但是当我使用带有此命令的 ffmpeg 'ffmpeg -i input.mp4 -movflags +faststart -vcodec libx264 -vpre default -crf 28 -ac 1 - ar 44100 -b 284k -ab 70k -r 15 -s 640x360 output.mp4 2>&1' 它给出了这个错误:'Unrecognized option movflags'
    • @HamzaIqbal 你的 ffmpeg 版本太旧了。请参阅 ffmpeg compile guidedownload a build of ffmpeg
    【解决方案2】:

    对于流式传输,moov atom 需要位于文件的开头,而不是结尾。对于 ffmpeg,请尝试添加:

    -movflags faststart
    

    【讨论】:

    • 添加-movflags faststart后出现此错误“无法识别的选项'movflags'”
    • 它显示在 ffmpeg 文档中,所以我无法想象您为什么会收到该错误:ffmpeg.org/ffmpeg-formats.html
    • @MisterNeutron 很可能是因为他的版本太旧了。
    【解决方案3】:

    您可以随时使用此工具进行测试 - http://renaun.com/blog/2010/06/qtindexswapper-2/

    【讨论】:

    • 我在 linux php 服务器中使用 FFmpeg,我如何在 linux 中做到这一点?
    • 我对 FFMPEG 不是很熟悉,但是你遇到的问题基本上是因为你的 MP4 文件的 MOOV ATOM 在文件的末尾,而不是在开头,所以整个文件必须是先下载后才能播放。我只是建议尝试使用此工具以确认它可以解决问题,仅此而已。
    • 是的,其他修复它的工具,如 qtindexswapper 和 MP4 FastStart (datagoround.com/lab) 不是服务器端应用程序。因此,您可以使用其中任何一个来修复您的视频,但您需要在您的 PC 上进行修复,然后上传结果。如果您已经在使用 ffmpeg 进行编码,那么利用现有的 ffmpeg 选项是一个更好的解决方案。
    猜你喜欢
    • 2012-02-12
    • 2014-03-07
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多