2013-02-03 55 views
0

我想製作一個「批處理」文件,以便對某些bash命令(convert.sh)進行說明。我認爲最好是描述這種情況。我有一個$#^ ^噸的MP4視頻,我想轉換成MP3的。對於每一個視頻來說,使用ffmpeg -i /root/name\ of\ video.mp4 /name\ of\ video.mp3來轉換它們會花費我不合理的時間。更何況所有的文件名都是長而複雜的,所以拼寫錯誤是一種可能性。所以我想知道如何製作一個shell腳本(用於bash),它將把每個文件的擴展名爲.mp4並將其轉換爲一個一致的名稱爲.mp3。就像在它轉換一個,然後當它完成時,它轉到下一個。即時通訊使用Linux的,所以任何第三部分軟的輕量級版本可能事先的任何援助不會工作,所以我需要使用的ffmpeg ...bash中的「批處理」文件

非常感謝您能提供

PS:我不能似乎得到了格式化sytax在網站上正常工作,所以如果somone可以爲我設置格式,也許發佈一個鏈接到它的工作原理,將不勝感激=)

PPS:我明白有關使用ffmpeg命令應該問超級用戶,但是因爲我沒有這麼多關於具體命令的任何問題,這更涉及腳本的bash文件我認爲這是正確的地方

+0

在編輯/張貼頁面的邊欄中有格式化說明。您也可以通過懸停在工具上獲得幫助文本。 –

+1

好像你還沒有采用shell腳本的基本介紹。嘗試谷歌搜索「bash腳本教程」 –

+0

@BjørneMalmanger請參閱iv嘗試過那樣的事情,但我所能找到的所有東西都在製作目錄和移動文件..... –

回答

1

一個bash for循環應該爲你做它在任何時間:

SRC_DIR=/root 
DST_DIR=/somewhereelse 
for FILE in ${SRC_DIR}/*.mp4 
do 
    ffmpeg -i "${FILE}" "${DST_DIR}/$(basename \"${FILE}\" .mp4).mp3" 
done 

對不起 - 我不知道ffmpeg命令行選項,所以我只是複製正是在您的文章。

+0

幾乎在那裏...它給我一個問題,因爲名稱中有sapces ....說'/ root/asr143:沒有這樣的文件或目錄' –

+0

@Konner - 我添加了一些''「'在編輯應該解決這個問題。 –

+0

非常好...由於某種原因,它給了我一個問題與-o選項,所以我刪除它,現在我在我的方式無縫和無痛苦的轉換=)非常感謝你的提示和有益的迴應=) –

0

1)使用發現:

find . -name \*.mp4 | xargs ./my_recode_script.sh 

2)my_recode_script.sh - 見this question 所以你可以很容易地改變擴展輸出文件名

其餘是平凡的腳本作業:

ffmpeg -i $name $new_name # in my_recode_script.sh after changing extension 

這對於一次性腳本來說已經足夠了,如果你想要一些可重用的東西,可以用另一個接收路徑的腳本來包裝它,ex張力,重新編碼和調用其他部分:)