我正在嘗試將一批 .mov 檔案轉換為 mp4。如何從管道獲取檔案名稱以產生 ffmpeg 命令?如何在鏈節中多次使用管道參數?我正在嘗試做這樣的事情:
ls *.MOV | ffmpeg -y -i $file "$file.mp4"
答案1
當您想要使用管道時,管道很有用標準輸出一個命令作為標準輸入另一個命令的。但是您需要將檔案作為輸入傳遞給ffmpeg
,而不是其標準輸入上的檔案名稱。並且您需要運行ffmpeg
多次,每個輸入檔案運行一次才能獲取輸出檔案。
長話短說,管道對此沒有用,您需要一個循環,正如其他答案所建議的那樣。但應該雙引號檔名參數:
for file in *.MOV; do
ffmpeg -y -i "$file" "$file.mp4"
done
您在評論中提到您可以編寫 Perl 腳本。這實在是太過分了。 Bash 是一種更簡單、非常適合的方法。請注意,您可以將上述腳本編寫在一行上,然後直接在命令列上執行它。
for file in *.MOV; do ffmpeg -y -i "$file" "$file.mp4"; done
答案2
您可以使用一個簡單的for
循環來完成此操作
#!/bin/bash
for file in /path/to/*.MOV
do
echo "Converting $file"
done