【问题标题】:FFmpeg batch convert multiple filesFFmpeg 批量转换多个文件
【发布时间】:2019-08-02 01:07:53
【问题描述】:

这个命令很好用:

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】:

创建一个文本文件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

不确定您想要进行哪种转换,但希望此模板可以帮助您入门。

【讨论】:

    猜你喜欢
    • 2013-04-15
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多