FFMPEG 转换的 mp4 文件无法在 firefox 和 chrome 中播放

Posted

技术标签:

【中文标题】FFMPEG 转换的 mp4 文件无法在 firefox 和 chrome 中播放【英文标题】:FFMPEG converted mp4 file does not play in firefox and chrome 【发布时间】:2014-02-06 16:07:59 【问题描述】:

我使用 FFMPEG 命令将 flv 视频文件转换为 mp4 并使用 html5 视频标签并在浏览器中播放视频。但是在使用 ffmpeg 将视频转换为 mp4 后,它不会在 Firefox 和 chrome 浏览器中播放。它显示一条错误消息“找不到支持格式和 MIME 类型的视频”。我已经添加了下面的代码,请帮助。

cmd /C ffmpeg -i INPUT_FILE_PATH -y -ar 22050 -ab 512 -b 800k -f mp4 -s 514*362 OUTPUT_FILE.mp4"

【问题讨论】:

能贴出html代码吗?更好的是,一个实时示例链接会很有帮助。 为什么不包括完整的ffmpeg 控制台输出? 我没有任何控制台输出,因为我在 java 中执行 ffmpeg 在 chrome 中我看不到视频,只有音频作品 您确定您的 Web 服务器配置为提供正确的 MIME 类型吗?此外,Firefox 不会在所有平台上播放 mp4。您需要退回到 webm。 【参考方案1】:

这就是你需要的。我最近发现自己也遇到了同样的问题。

将此添加到您的命令中:

-pix_fmt yuv420p

如果不指定 pix_fmt 则默认为 yuv444p,这似乎与当前浏览器不兼容。

我成功测试的完整命令是:

ffmpeg -y -i "INPUT-FILE" -c:v libx264 -preset slow -crf 22 -pix_fmt yuv420p -c:a libvo_aacenc -b:a 128k "OUTPUT-FILE"

将您的输入、输出路径放在引号内,然后尝试开始。在当前的 IE、Firefox 和 Chrome 中播放。我正在使用内置的 aac 编码器进行音频。

【讨论】:

虽然这很好用并且也解决了我最初的问题,但如果您在输出视频上遇到偏色或对比度降低的问题,请尝试使用yuvj420p 而不是yuv420p 感谢 -pix_fmt yuv420p 我的 mp4 现在可以在 IE11/Firefox/Chrome/Edge 上运行。我必须检查一下,这是在做什么,因为这是我第一次看到它的地方 请务必使用 H.264 视频编解码器 (-vcodec h264) -- 查看其他答案。 我有一个类似的问题,我只将音频文件转换为 mp4/m4a,并且在 Chrome 或 Firefox 上没有播放音频。 ***.com/questions/64412488/…【参考方案2】:

您使用的是最新版本的 Firefox 和 Chrome 吗?

您是否在系统和浏览器上安装了必要的编解码器?

旧版本的浏览器会出现显示多媒体或 MIME 内容的问题。不正确或旧的编解码器也会导致问题。

【讨论】:

【参考方案3】:

我认为您的编码问题不在于 FFMPEG 或 HTML5。它在您正在使用的命令和库中。您应该使用“libx264”库为 HTML5 编码 MP4 视频。

应该使用正确的命令。

ffmpeg -i input.mov \
-acodec libfaac -ab 96k \
-vcodec libx264 -vpre slower -vpre main \
-level 21 -refs 2 -b 345k -bt 345k \
-threads 0 -s 640x360 output.mp4

为了方便复制粘贴

ffmpeg -i input.mov -acodec libfaac -ab 96k -vcodec libx264 -vpre slower -vpre main -level 21 -refs 2 -b 345k -bt 345k -threads 0 -s 640x360 output.mp4

如果您偶然发现缺少 x264 编解码器,您可以安装 Zeranoe 版本。请参阅此 SO 页面。 [FFmpeg installation for x264 codec]

更多编码说明见[https://trac.ffmpeg.org/wiki/x264EncodingGuide]

【讨论】:

【参考方案4】:

我对您的命令行所做的更改:

我已明确指定音频编解码器,因此它是 AAC-LC。 添加了“-strict -2”以使用实验性 AAC-LC 编解码器。

这对我在 Firefox 和 Chrome 中都有效。

ffmpeg -y -i "INPUT" -ar 22050 -ab 512 -b 800k -f mp4 -s 514*362 -strict -2 -c:a aac "OUTPUT.mp4"

【讨论】:

我在下面的代码中尝试过这个命令,但它仍然无法在 Firefox 和 chrome 中运行。我正在将 3 个视频合并在一起,并添加 1 个额外的音频通道,并在视频上覆盖两个文本层。它在 Firefox 和 chrome 中播放音频,但视频保持黑色。有什么帮助吗?我在 android 应用程序中这样做。这是我的代码:dropbox.com/s/jvczuhkmlt76ykd/Androidcode.rtf?dl=0【参考方案5】:

根据@Unrealist 的回答,这似乎是视频编解码器兼容性的问题。您需要检查浏览器的视频格式支持,然后在FFMPEG中选择合适的音频和视频编解码器:

HTML5 video codecs browsers support chart

【讨论】:

【参考方案6】:

我也遇到过类似的问题 - 当组合来自一个集合的 png/mp3 时,一切正常,但组合来自另一个集合的 jpg/mp3 无法在浏览器中播放,但在 vlc 中一切正常。 我已经发现 -pix_fmt 是问题所在,它在重新组合 png 集合时起作用,但在重新组合 jpg 集合时不起作用,除非也使用 -vf scale。

【讨论】:

【参考方案7】:

检查添加到您的服务器的 MIMe 类型支持,这就是您的情况的问题,因为那里显示错误“它显示一个错误,提示“没有找到支持格式和 MIME 类型的视频”。至于您的信息,不支持在 IIS 7 中添加的 MP4 MIME 类型,您必须通过以给定方式更改其 web.config 文件来添加它..

<configuration>
   <system.webServer>
      <staticContent>
         <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
      </staticContent>
   </system.webServer>
</configuration>

希望这能让您深入了解您的问题。

【讨论】:

以上是关于FFMPEG 转换的 mp4 文件无法在 firefox 和 chrome 中播放的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg 从 avi 文件生成无法播放的 MP4 文件

如何使用 bash 命令或 Ruby 使用 ffmpeg 将 mp4 文件批量转换为 ogg

使用FFmpeg将RTP的数据包保存为mp4文件

无法使用 ffmpeg 将在线 gif 转换为 mp4 视频

ffmpeg - 将 MOV 文件转换为 MP4 [关闭]

在 php 中通过 ffmpeg 命令将 avi 文件转换为 mp4 文件