我喜欢创建一个 Bash 脚本来使用 FFmpeg 连接 MP4 文件,一次分批 5 个文件,用于包含 100 个 MP4 文件的目录,这样之后就会有 20 个文件,例如:
001_005.mp4、006_010.mp4 等等……
而不是仅包含所有 100 个文件的 1 个文件。
mylist.txt 的内容:
file 001.mp4
file 002.mp4
file 003.mp4
file 004.mp4
file 005.mp4
............
file 099.mp4
file 100.mp4
虽然我找到了一个运行良好的命令(来自这个 StackOverflow 线程),但它只会创建一个包含所有 100 个文件的文件。
#!/bin/bash
cd /home/admn/Downloads/MP4_Files;
# Create mylist.txt:
for f in *.mp4
do
echo "file $f" >> mylist.txt
done;
# Concatenate files:
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4;
那么,我该如何修改 ffmpeg 命令,使其一次分批连接 5 个文件。
所有文件都具有完全相同的分辨率 (1080p)、音频和视频编解码器。
操作系统:Ubuntu 伴侣 21.04
ffmpeg 版本:4.3.2-0+deb11u1ubuntu1
我认为以下脚本会起作用。
echo
从行中删除ffmpeg
以使其发挥作用。检查临时文件
xaa' ...
xat` 的内容是否与输出文件的名称(和内容)匹配。另一种解决方案是使用嵌套循环。
只要有剩余文件,内部循环就会使用
${@:1:5}
(最多)5 个文件的下一个切片。假设
mylist.txt
存在于您当前的工作目录中,您可以执行以下操作,