首页 > 解决方案 > 无法使用媒体源扩展在 chromium 上播放 webM 文件。适用于 Firefox 和 vlc

问题描述

我目前正在尝试使用媒体源扩展来实现视频播放器。目前只是一个非常简单的概念证明,遵循我在这里找到的教程。

我在这里使用来自 github 的所有源代码克隆了他们的 repo,并正在使用各种视频文件在 Chromium 和 Firefox 上测试实现。

两种浏览器的 repo 中的示例 webm 文件都运行良好。

接下来,我尝试使用 ffmpeg 和mse-tools转换从某个随机站点下载的视频,以使用以下命令“对齐 webm 文件的集群”:

ffmpeg -i randomvideo.mp4 -c:v libvpx -c:a libvorbis output.webm
mse_webm_remuxer output.webm aligned.webm

同样,两种浏览器都一切正常。

最后,我想转换一个我在搅拌机中创建的非常简单的动画(在 mp4 中使用 h264 渲染)。

我尝试使用与上述相同的过程转换生成的文件,并且该文件在 Firefox 上正常播放,但没有在 chromium 上加载。

我假设我在转换文件时犯了一些错误,但是用 vlc 和 ffprobe 检查最终文件的属性,我找不到任何明显的问题。

关于我做错了什么的任何想法?

我做的最后一项测试是去这个站点获取一些示例 webm 文件。

我下载了“WebM 中的 Big Buck Bunny Trailer”和“Elephants Dream as WebM File”。

这两个文件都可以在 Firefox 中运行,但“Elephants Dream”文件无法在 chromium 中播放。

我在具有以下浏览器版本的 linux 机器(Arch Linux 发行版)上:

Chromium 版本 69.0.3497.100(官方构建)Arch Linux(64 位)

火狐 62.0.3(64 位)

我已经在谷歌驱动器上分享了我从搅拌机动画创建的文件(非常小 - 只有 36 KB),以防有人想查看它。

标签: videoffmpegwebmmedia-source

解决方案


所以,在周末敲了敲头之后,我终于发现了我的小搅拌机渲染的 mp4 文件的问题。如果有人遇到类似问题,请在此处发布。

我尝试使用各种其他软件套件转换我的原始 mp4 文件,以查看 ffmpeg 是否正在做一些使我的最终 webm 文件不兼容的事情。尝试了几个在线转换器和一个商业视频转换器(试用版),但都得到了相同的结果。没有带有 MSE 的视频。然后,偶然我使用 KDENLIVE 转换了它。不是真正的转换,而是“渲染”,就好像它是一个视频编辑项目一样。令我惊讶的是,它奏效了!在检查文件之间的差异后,我注意到 KDENLIVE 在 webm 文件中添加了一个音频流。

这使我意识到没有音频的原始文件正在生成一个具有 mime 类型'video/webm; codecs="vp8"'(而不是'video/webm;codecs = "vp8,vorbis"')的 webm 文件。所以对我来说,解决方案是要么更改传递给的 mimetype,addSourceBuffer()要么生成带有静音音频流的 webm 文件(从而创建一个类型为 的文件 'video/webm;codecs = "vp8,vorbis"')。

上述两种解决方案都有效,我的文件能够在铬中播放。

作为最后的旁注,来自这个webm 演示文件站点的“大象梦”文件仍然没有按原样播放,但我确实用 kdenlive“重新渲染”它,还用 ffmpeg 重新编码,在这两种情况下,新文件有效。所以我相信,原始文件可能存在一些问题。


推荐阅读