video - 无法使用媒体源扩展在 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),以防有人想查看它。
解决方案
所以,在周末敲了敲头之后,我终于发现了我的小搅拌机渲染的 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 重新编码,在这两种情况下,新文件有效。所以我相信,原始文件可能存在一些问题。
推荐阅读
- azure - 使用 Azure keyvault 机密中的 VM 管理员密码创建 Azure VM
- docker - docker-compose 规范说 cpus 选项已弃用,但 docker run 说使用 --cpus
- php - 上传文件返回 NULL - 带有 Laravel 8 的 VueJs3
- python - 如何使用列名指定使用 sqlite3 写入的内容?
- elixir - Elixir 将元组列表转换为 Map
- powershell - ComboBox.SelectedItem 给出 Null 值
- makefile - /usr/bin/ntox86-g++:尝试链接测试单元和谷歌框架二进制文件时参数列表太长
- pdf - Pandoc 将带有图像的 md 转换为 pdf
- javascript - 如何为此 serverjs 创建 totp 验证器表单
- javascript - 我应该如何获取猫鼬模式的随机字段?