ffmpeg - 转换由 Chrome 生成的 webm 视频很慢

Nut*_*ing 4 ffmpeg webrtc

我以两种不同的方式生成 webm 文件。一个使用 Chrome WebRTC MediaRecorder,另一个使用 js 库,它逐帧生成 webm 视频(webm-writer-js)。生成的视频文件大小差别不大,快的是慢的60%,但速度相差1000%

使用基本的 ffmpeg 语法-i input.webm output.mp4,使用 Chrome 的媒体记录器创建的文件实际上需要将近 10 倍的时间来转换。转换日志略有不同,但整体看起来与我的新手眼睛非常相似。左边是快速转换,右边是慢速转换。

在此处输入图片说明

快速的会引发一些错误,但转换似乎成功了。在慢速转换中,您可以看到处理了许多帧,在快速转换中,好像只有一个(非常快)。使用-preset veryfast将速度时间减半,但质量损失是可见的。

知道如何在不影响质量的情况下加快 Chrome 生成的视频的转换速度吗?非常感谢!

Gya*_*yan 10

Chrome 的文件被检测为具有 1000/s 的帧速率。它应该是 30 fps。

两种解决方法 - 强制视频同步到可变帧速率

-i input.webm -vsync vfr output.mp4
Run Code Online (Sandbox Code Playgroud)

或强制输出速率

-i input.webm -r 30 output.mp4
Run Code Online (Sandbox Code Playgroud)

  • 注意:Chrome 生成的文件不会设置 WebM 的 [DefaultDuration](https://www.webmproject.org/docs/container/#DefaultDuration)(请参阅 [CL](https://chromium.googlesource.com/chromium/ src/+/50252de90c71b7d5d12c30121a82d4e790f74252%5E%21/#F0) 发生的地方),这可能会导致 1000fps 误检测。 (4认同)