我无法将字幕文件硬转为 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