gpt4 book ai didi

bash - 更正 ffmpeg 字幕脚本中的变量名

转载 作者:行者123 更新时间:2023-12-04 22:48:25 27 4
gpt4 key购买 nike

我有 175 个 mp4 视频文件和扩展名为 .ass 的字幕文件。不幸的是,我的智能电视无法阅读这些字幕。我计划将字幕刻录(硬编码)到视频中。

我使用这个命令:

ffmpeg -i orgvideo.mp4 -vf subtitles="subtitle.ass" newvideo.mp4     <br>

有用。所以我打算用 bash脚本来自动化这个过程。

脚本中的所有内容都可以正常工作,但 ffmpeg命令行无法检索字幕变量。

谷歌搜索后,我发现我的文件名有特殊字符和空格,这导致我的脚本失败。如果视频文件名和字幕文件很简单,那么脚本应该没有问题。

这是我的脚本:
for f in *.mp4
do
new="${f%%.mp4} (CHT).mp4"
subtitle="${f%%.mp4}.chi.ass"
< /dev/null ffmpeg -i "$f" -vf subtitles="$subtitle" "$new"
done
ffmpeg行在读取字幕文件变量时出现问题。任何人都可以帮忙吗?

最佳答案

尝试改变:

new="${f%%.mp4} (CHT).mp4"
subtitle="${f%%.mp4}.chi.ass"
< /dev/null ffmpeg -i "$f" -vf subtitles="$subtitle" "$new"

至:
new="${f%%.mp4}.CHT.mp4"
subtitle="${f%%.mp4}.chi.ass"
# make a temp hardlink to evade `ffmpeg`'s
# onerous quoting requirements.
x=`mktemp -u -p . --suffix=.ass`
ln "$subtitle" $x
< /dev/null ffmpeg -i "$f" -vf subtitles=$x "${new}"
rm $x

这个怎么运作。由于 ffmpeg使使用带有转义的字幕文件变得困难,只需将字幕文件链接到名称 $x没有转义,让 ffmpeg咀嚼一遍,然后删除链接。

更简洁的方法是使用名为 ffescape 的工具。翻译 $subtitle多变的;不幸的是,该工具目前未打包在 ffmpeg 之外。的源代码树。

关于bash - 更正 ffmpeg 字幕脚本中的变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44644890/

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