2015-05-01 113 views
0

我正在嘗試循環播放幾個mp4文件並將其轉換爲其他格式。下面的工作,但它只轉換一個文件和循環停止。最初這些文件在文件夾videos中,當我轉換時,我將移動到文件夾formatted_vids。我怎樣才能正確地循環所有的MP4文件?遍歷子目錄中的所有媒體文件

FILE_PATH="/media/videos/" 
find $FILE_PATH -name "*.mp4" | while read file 
     do 
      filename=$(basename "$file") 
      extension="${filename##*.}" 
      video_file="${filename%.*}" 
      dir="/media/formatted_vids/${filename%.mp4}" 
      mkdir -p "$dir" 
      mv "$file" "$dir" 

      ffmpeg -i $dir/${filename} -c:a libfdk_aac -vbr 3 output.m4a "$dir/${filename%.mp4}-%03d.m4a"; 

     done 

初始文件夾

|-- /media/videos/ 
    | |-- xxxx-test_file-aa1 
    |  |--xxxx-test_file-aa1.mp4 
    | |-- xxxx-test_file-bb2 
      |--xxxx-test_file-bb2.mp4 

將文件移動到文件夾:

|-- /media/formatted_vids/ 
    | |-- xxxx-test_file-aa1 
    |  |--xxxx-test_file-aa1.aac 
    | |-- xxxx-test_file-bb2 
      |--xxxx-test_file-bb2.aac 

回答

2

試試這個:

list=`find $FILE_PATH -name "*.mp4"` 
for file in $list 
do 
    filename=$(basename "$file") 
    extension="${filename##*.}" 
    video_file="${filename%.*}" 
    dir="/media/formatted_vids/${filename%.mp4}" 
    mkdir -p "$dir" 
    mv "$file" "$dir" 
    ffmpeg -i $dir/${filename} -c:a libfdk_aac -vbr 3 output.m4a "$dir/${filename%.mp4}-%03d.m4a"; 
done 

免責聲明:我假設循環體工作非常細。

+0

是的,這工作,我看到的邏輯。不知道爲什麼它沒有以其他方式工作。 –

相關問題