Shell-Script

如何將一批avis轉換成mp4?

  • September 22, 2015

我在一個目錄中有幾個 avi 文件,我想使用 avconv 將它們轉換為 mp4。現在我知道瞭如何手動為每個 avi 執行此操作的基本過程,即($@隨每個新 avi 更改的變數在哪裡):

avconv -i $@.avi -c copy $@.mp4

但我想知道是否有人知道如何編寫 bash 腳本來自動執行此操作。我嘗試了為我的優化 PNG 問題提供的答案的修改版本,即:

for k in `find . -name "*.avi"`
do
  avconv -i "$k" -c copy "$k.mp4"
done

但由於 k 的形式是./filenameavconv 在作為輸入時無法理解它。另一個問題是,即使我使用了引號,因為我的許多 avis 文件名中都有空格,出於某種原因,avconv 正在為文件名中的每個空格分隔的單詞執行。

這應該遍歷所有.avi文件並轉換它們(未經測試):

printf '%s\0' *.avi | xargs -0 -I {} -P 1 avconv -i "{}" -c copy "{}".mp4

您可以更改-P 1為 eg-P 8以並行轉換 8 個文件。

引用自:https://unix.stackexchange.com/questions/231357