ffmpeg 吃掉/无法从脚本中读取变量名

ffmpeg eats up / cannot read variable names from script

以下文本文件(“myTextFile.txt”)用于将视频剪切成块

00:00:00.0 video_name_1.mp4
00:10:00.1 video_name_2.mp4
00:20:00.1 video_name_3.mp4

第一列是切割点的时间戳[HH:MM:SS.millis]。

我用下面的命令读取txt文件,把一个叫“input_video.mp4”的视频剪成10秒一个的片段

while read line ; do 
  start_time=$(echo $line | cut -d' ' -f1);
  output_name=$(echo $line | cut -d' ' -f2);
  ffmpeg -ss $start_time -t 00:00:10.0 -i input_video.mp4 ${output_name}; 
done < myTextFile.txt

但它不起作用。输出文件名已损坏,我不知道为什么。我没有在输出文件名中使用任何特殊字符。为什么会这样?

我目前的解决方法是将最后一行(“ffmpeg ...”)打印到控制台中,然后将所有命令粘贴到控制台命令中,从而执行它们...

如评论所述,字段数不匹配。 您正在使用 -t 选项指定持续时间,而不是使用 stop_time 在你的 ffmpeg 命令中。此外,您还需要添加 -nostdin 选项来禁用通过标准输入的输入。那么请试试:

while read -r start_time output_name; do
    ffmpeg -y -nostdin -ss "$start_time" -t 10 -i input_video.mp4 "$output_name"
done < myTextFile.txt