我正在編寫一個shell腳本來編碼給定目錄中的音頻文件,並將.flac文件輸出到另一個目錄。我的概念驗證循環遍歷每個文件並通過ffmpeg運行。我懷疑有一種方法可以通過單個命令將整個輸入文件列表傳遞給ffmpeg,但一直無法弄清楚。FFmpeg可以一次編碼多個文件嗎?
我現在的版本是這樣的:
#!/bin/sh
encode_album() {
local artist=$1; shift
local album=$1; shift
local in_dir="${HOME}/Music/raw-imports/${artist}/${album}"
local out_dir="${HOME}/Music/library/${artist}/${album}"
mkdir -p "${out_dir}"
find "${in_dir}" -type f -name *.aiff | while IFS= read -r in_file; do
local track_name=$(basename "${in_file}" .aiff)
local out_file="${out_dir}/${track_name}.flac"
encode_track "${in_file}" "${out_file}"
done
}
encode_track() {
local in_file=$1; shift
local out_file=$1; shift
</dev/null ffmpeg -i "${in_file}" -codec:a flac "${out_file}"
}
encode_album "Rolf Lislevand" "La Mascarade"
這工作,但我需要將這些文件送入FFmpeg的一個接一個,或者是能夠接受一個批處理文件,並處理它們?
在該線程的每個例子是關於一個接一個通過文件循環,就像我已經在做。我想知道如果ffmpeg支持類似'ffmpeg -i file1 file2 file3 ... -codec:a flac out1 out2 out3 ...' – ivan
您可以將類似類型的多個文件轉換爲另一種相同類型的文件,例如:ls * .avi | xargs -I {} ffmpeg -i {} {} .mp3 –
你也可以在這裏看到多個輸出: https://trac.ffmpeg.org/wiki/Creating%20multiple%20outputs –