FFmpeg批量转换多个文件

问题描述 投票:0回答:1

这个命令效果很好:

ffmpeg \
-i /mnt/share/Movies2/"nameofmovie.mkv" \
-map 0:0 \
-map 0:1 \
-map 0:2 \
-c:v libx264 \
-preset veryfast \
-tune film \
-crf 18 \
-c:a:0 copy \
-c:a:1 copy \
/mnt/share/Converted/"nameofmovie".mkv

但我希望能够从文本文件中读取输入文件,或者为我要转换的每个文件一个接一个地运行此命令。有没有我可以设置的脚本来执行此操作?并非所有文件都在相同的文件夹或相同的格式,所以我只能更改文件名和格式将是伟大的。我曾经有一个bash脚本,可以为整个文件夹执行此操作,但这不是我想在这里做的。我正在使用Ubuntu服务器18.04另外我是新手这个我发现这个整个文件夹:

for i in *.avi;
do name=`echo $i | cut -d'.' -f1`;
echo $name;
ffmpeg -i "$i" "${name}.mov";
done

但我不知道如何适应单个文件

bash ubuntu ffmpeg terminal
1个回答
0
投票

创建一个文本文件the_list.txt如下:

File1.mp4:mp4
File2.avi:avi

这里第一个字段是文件名,第二个字段是源格式(可以从文件扩展中导出,但保持简单)。

创建脚本do_conv.sh:

cat the_list.txt | while read L
do
   FNAME=$( echo $L | cut -d':' -f1 )
   SRCFMT=$( echo $L | cut -d':' -f2 )
   echo 'Next File: ${FNAME}"
   if [ "${SRCFMT}" = "mp4" ]
   then
      ffmpeg -i ${FNAME} ....
   elif [ "${SRCFMT}" = "mp4" ]
   then
      ffmpeg -i ${FNAME} ....
   else
      ffmpeg -i ${FNAME} ....
   fi
done

不确定你想要什么样的转换,但希望这个模板可以帮助你入门。

© www.soinside.com 2019 - 2024. All rights reserved.