我有一堆仅包含视频和音频的 mp4 文件,想编写脚本来合并这两个文件。但问题是,有多个视频和音频文件,文件名中分别用 (视频) 或 (音频) 表示。
这就是我手动操作的方式:
ffmpeg -i "Videofile (Video).mp4" -i "Audiofile (Audio).mp4" -preset fast -crf 1 "Output file Name.mp4"
答案1
cat - << EOS > myVideoAudioMergerScript
#!/bin/bash
for file in *\(Video\).mp4; do
baseName=${file%\(*}
#echo baseName=$baseName
echo ffmpeg -i \"$f\" -i \"${baseName}(Audio).mp4\" -preset fast -crf ${baseName% }_VideoAudio.mp4
done
chmod +x myVideoAudioMergerScript
可以帮助您入门。一旦您确认输出echo
正确,您可以删除echo
或直接将输出通过管道传输到 shell,即
myVideoAudioMergerScript | bash
我认为一些软件包认为()
在文件名中包含空格字符和(括号)是一个好主意,但它增加了编写解决方案脚本的复杂性并且要求您对使用这些名称的任何变量进行双重引用。
我没有简单的方法来测试这个,所以如果你需要帮助,请用错误消息/文件名等的确切文本更新你的问题,然后使用{}
鼠标选择的文本上的工具给出正确的格式code/data/output/fileName/statusMsg/errMsg
。