ffmpeg 将 ass 文件硬字幕转换为 mp4

ffmpeg 将 ass 文件硬字幕转换为 mp4

我无法将字幕文件硬转为 mp4 文件。我使用的代码(似乎能用一两次)是:

ffmpeg -i "videofile" -vf "ass=assfile" -scodec copy "outputfile"

据我了解,这是一个静态构建。我使用的是 ffmpeg 版本:

ffmpeg version N-70239-g111d79a Copyright (c) 2000-2015

--enable-libass出现在配置列表中。

当我在命令中添加“-v debug”时,我可以看到它如何解析选项,并且它似乎以某种方式理解“-scodec copy”:

Reading option '-scodec' ... matched as option 'scodec' (force subtitle codec ('copy' to copy stream)) with argument 'copy'.

有人知道为什么它不起作用吗?

答案1

看来问题出在我使用的静态构建上,因此我需要设置一些环境变量并拥有一个 fonts.conf 文件。我得到答案的地方是:

https://ffmpeg.zeranoe.com/forum/viewtopic.php?f=10&t=318&start=20

fonts.conf 也可以在那里找到。

我将环境变量设置为:

FC_CONFIG_DIR=C:\Program Files\ffmpeg
FONTCONFIG_FILE=fonts.conf
FONTCONFIG_PATH=C:\Program Files\ffmpeg

...我基本上将 fonts.conf 保存到 ffmpeg 文件夹的根目录并创建了新的变量。

答案2

原因:

您的代码有-scodec副本。我认为没有像-vcodec和这样的编解码器acodec,我认为这是您的错误,因此请尝试将其删除。

解决方案:

ffmpeg -i "videofile" -vf "ass=assfile" "outputfile"

考虑:

ass过滤器需要使用 --enable-libass 来编译 ffmpeg。

另外,您必须确保您正在使用 ass 文件,如果不是,请使用以下命令将它们转换为 ass:

ffmpeg -i yourSubtitle.srt yourSubtitle.ass

相关内容