Linux
ffmpeg 批量轉碼目錄中的影片
我有大量名為不同事物和不同副檔名的影片(一些 mp4 一些 wmv 等)。
我想在特定目錄中的每個影片上執行下面的命令,然後將其保存在另一個目錄中,不會覆蓋原始文件。
有些影片可能重複,如果發生這種情況,它應該暫停腳本。例如,可能
video1.mp4
&video1.avi
兩者都不能是 video1.mp4,/home/videos/processed
所以腳本應該暫停。ffmpeg -i '/home/videos/unprocessed/vidabc.mp4' -f mp4 -vcodec libx264 -preset fast -profile:v main -acodec aac -movflags +faststart '/home/videos/processed/vidabc.mp4' ffmpeg -i '/home/videos/unprocessed/vidxyz.mp4' -f mp4 -vcodec libx264 -preset fast -profile:v main -acodec aac -movflags +faststart '/home/videos/processed/vidxyz.mp4'
您可以使用帶有標誌的
find
命令處理目錄中的每個文件。-execdir
例子:
find /home/videos/unprocessed -type f \ -execdir ffmpeg -i '{}' -f mp4 -vcodec libx264 -preset fast \ -profile:v main -acodec aac -movflags +faststart '/home/videos/processed/{}.mp4' \;
-type f
表示您只想查找文件,而不是目錄。在
-execdir
標誌之後,'{}'
將替換為文件的路徑,例如./vidabc.mp4
.在
-execdir
命令的末尾,包含 a\;
以終止命令。請注意,在此範例中,生成的文件名可能如下所示:
/home/videos/processed/vidabc.mp4.mp4
/home/videos/processed/vidxyz.avi.mp4
/home/videos/processed/vidxyz.mp4.mp4
如果這是一個問題,有辦法解決這個問題。有關類似範例,請參見命令“find”-exec 替換字元串。