2014-09-10 357 views
0

我搜索包含所有属性(如标题)的脚本。ffmpeg将.avi,.mp4,.mp3,.flv,.mkv转换为mp4

我已经完成了一个简单的操作,但目前为止只有一个属性,并且我不希望每个属性都有一个脚本不会被混淆。

像这样,运行脚本10分钟以查看是否存在包含.flv的任何文件,并自动将该文件转换为mp4属性。

#!/bin/bash 
# Convert all flv to mp4 
ext=.mp4 
for file in *.flv; do 
currmov=$file$ext 
ffmpeg -r 15 -i $file -b 296k -s 640x320 -vcodec mpeg4 -acodec aac $currmov 
done 

感谢您的帮助! /M

+0

执行参数'ffmpeg'需要改变其他转换? – 2014-09-10 20:04:04

+0

你真的想要输出为'file.flv.mp4'吗? – 2014-09-10 20:04:28

+0

我想所有的文件只是.mp4没有flv.mp4 可以说,文件名是movie.flv然后我想文件只是movie.mp4而不是。 – 2014-09-10 20:05:54

回答

1

对于所有的扩展:

for file in *.{flv,avi,mp3,mkv}; do 
     target="${file%.*}.mp4" 
     [[ -f "$target" ]] && { echo "skipping $file - $target exists" ; continue; } 
     echo ffmpeg -r 15 -i "$file" -b 296k -s 640x320 -vcodec mpeg4 -acodec aac "$target" 
done 

ffmpeg之前删除echo如果满意

0

你只需要一个第二循环

for ext in avi mp3 flv mk4; do 
    for file in *.$ext; do 
     ... 
    done 
done