gpt4 book ai didi

FFmpeg 进行不必要的复用

转载 作者:行者123 更新时间:2023-12-04 23:00:54 27 4
gpt4 key购买 nike

我正在编写一个脚本,该脚本将 MKV 或 AVI 等视频文件更改为 MP4,然后从网络流媒体中准备它们。我希望我的输出使用 H.264 和 AAC 编解码器。

到目前为止,我的命令如下所示:

ffmpeg -i input.mkv -vcodec h264 -acodec aac -ab 128k -ac 2 -strict -2 output.mp4

但是,当编解码器已经是 h.264 时,它仍然会对其进行多路复用,它会显示:(h264 -> libx264)。

如果我用'-vcodec copy'替换'-vcodec h264',当编解码器是H.264时它会更快,但如果输入文件中有不同的编解码器,当然不会更改编解码器。

FFmpeg 有没有办法识别编解码器几乎相同,因此不会对视频流进行多路复用,但如果源不是 H.264,仍然会更改视频编解码器?

最佳答案

不能。FFmpeg 只能复制比特流或重新编码。它无法猜测您是否要保留某个编解码器。您必须解析文件信息,然后决定是否要复制。

此处列出了如何执行此操作的一些示例:MKV to MP4 transcoding script issues

基本上,你可以这样做(来自@evilsoup 的无耻插件):

ffprobe input.mkv 2>&1 | sed -n '/Video:/s/.*: \([a-zA-Z0-9]*\).*/\1/p' | sed 1q'

这将输出 h264对于 H.264 视频流。

小提示:尝试习惯于指定所需的确切编码器。 h264不是真正的 FFmpeg 编码器——它默认为 libx264 .所以宁愿使用 -c:v libx264 .
还有一件事: aac是FFmpeg的内置AAC编码器。第三方编码器,如 libfdk_aaclibfaac提供 VBR 编码模式,通常质量优于 aac .

关于FFmpeg 进行不必要的复用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15326219/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com