示例:播放列表文件的内容:
(0:00:00) Abcde efgh ijk
(0:04:28) bcdea gefgh idjk
(0:17:00) qbecde efgh ijk
(0:27:40) hebcde efgh ijk
(0:35:03) Abeds esdh dfk
(0:49:16) dfhks ierkld sls
(0:58:26) dhekd sdoemc ks
(1:09:40) whdjoc dlf fg
...
我正在寻找一种通过从播放列表文件中获取和输出文件名参数来切片视频的-ss
方法-t
。
ffmpeg -ss "$1" -i "$3" -to "$2" -c copy -r 30 -c:v libx264rgb -crf 0 -preset ultrafast -c:a aac "$4".mp4
开头的时间戳成为 -ss 参数,文本成为输出文件的名称,下一行的时间戳成为 -t 参数。
与
awk
:输入文件被拆分为字段
(
,)
field2 被读取为ss
ort
值,field3 被读取为output
文件名(删除了第一个空格字符)。您需要指定最后一个播放列表条目的input
文件-i
和持续时间tlast
。输出:
我只熟悉手刹,如果需要更改,请告诉我。
有很多方法可以解决这个问题,但这里有一种。我将假设播放列表包含在
playlist.txt
其中并且格式与给定完全相同(包括假设文件名文本始终由三个空格分隔的单词组成)。如果这些假设不完全成立,您可以修改下面显示的内容以适应。输出是:
您可以改为使用这些参数构建一个 ffmpeg 命令来运行,而不是像我所做的那样将它们打印出来。
您可以检查中间文件以查看每个命令的作用。基本上,前两个提取与每个剪辑间隔的开始和结束相对应的行。paste 命令连接每个文件中的相应行,因此结果
playlist_intervals.txt
每个间隔有一行。然后最后一行只是提取你想要的参数。