video - 为什么 Chrome 83 不能播放这段 AV1 编码的视频?
问题描述
该文件在 VLC 中播放效果很好。
我已经尝试将其添加codecs="av01.0.05M.08"
到视频源中,但没有运气 - 尽管这里有说明,但没有浏览器会播放它:https ://caniuse.com/#feat=av1
视频编码如下:
ffmpeg -i input.avi -pix_fmt yuva420p -f nut -c:v libaom-av1 -minrate 1k -b:v 350k -maxrate 2000k -strict experimental output.mp4
浏览器控制台:
Chrome 没有给出任何关于它为什么不能播放的提示。Firefox 提供了一些小线索。
Firefox 显示如下
Media resource https://example.com/example.mp4 could not be decoded. example.mp4
Media resource https://example.com/example.mp4 could not be decoded, error: Error Code: NS_ERROR_DOM_MEDIA_METADATA_ERR (0x806e0006)
Details: static MP4Metadata::ResultAndByteBuffer __cdecl mozilla::MP4Metadata::Metadata(mozilla::ByteStream *): Cannot parse metadata
任何关于我哪里出错的建议,无论是在理解还是在编码参数方面,将不胜感激!
解决方案
您手动选择了 NUT 多路复用器,-f nut
但给出了输出文件名.mp4
,因此它实际上是浏览器不支持的 NUT 格式。尝试:
ffmpeg -i input.avi -c:v libaom-av1 -minrate 1k -b:v 350k -maxrate 2000k -vf format=yuv420p -strict experimental -movflags +faststart output.mp4
请注意,libaom-av1 不支持yuva420p
像素格式,因此yuv420p
被使用。见ffmpeg -h encoder=libaom-av1
。
推荐阅读
- git - 如何在 VS Code 中删除 Git 存储库
- reactjs - Firebase push() 函数抛出 .child() 不是函数错误
- python - 如何防止在Django中的每个测试用例之后刷新测试数据库中的数据
- c# - 如何使用 System.CodeDom 获取条件语句?: 不是 if-else 块
- docker - 如何使用运行 pm2 的 nodejs 为 docker 设置 pm2-logrotate?
- amazon-web-services - 如何将现有堆栈转换为嵌套堆栈
- cmake - Poco 项目的 CMake 构建中缺少 libcrypto.lib
- python - discord.ext.commands.errors.CommandInvokeError:命令引发异常:AttributeError:'Command'对象没有属性'strftime'
- r - 在 R 中绘制互惠尺度
- r - Parse 无法评估文本