2016-07-19 5 views
3

ffmpegを使用して、特定のフォルダ内のmp4ファイルをすべてmp3に変換する方法を教えてください。 私がGoogleで見たほとんどすべてのリンクは、mp4ビデオをmp3に変換することに関するものです。 私はVLCプレーヤーでこれを行うことができますが、私は巨大なコレクション〜1000のmp4オーディオファイルを持っており、これをコマンドラインでいくつかのスクリプトやコマンドで実行したいと考えています。 これはgstreamer経由で行うことはできますか?ffmpegを使用してフォルダ内のすべてのmp4オーディオファイルをmp3に変換する

+0

をしていますそれらはすべて同じディレクトリにありますか? – LordNeckbeard

+0

はい。私はffmpeg.exeをC#コードを使用して呼び出し、Linqを使用して各ファイルを反復処理することで方法を見つけました。 – Raulp

答えて

1
FileInfo[] Files = d.GetFiles("*.mp4").Union(d.GetFiles("*.<any other file extension>")).ToArray(); 

foreach (FileInfo file in Files) 
      { 
       // str = str + ", " + file.Name; 
        builder.Append(Path.GetFileNameWithoutExtension(file.Name)); 

ProcessStartInfo startInfo = new ProcessStartInfo(); 
     startInfo.CreateNoWindow = false; 
     startInfo.UseShellExecute = false; 
     startInfo.FileName = "ffmpeg.exe"; 
     startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     startInfo.RedirectStandardOutput = !string.IsNullOrEmpty("test"); 
    startInfo.Arguments = "-i " + filename + ".mp4 -q:a 0 -map a " + filename + ".mp3"; 

} 
3

一つの方法は、ループためのbash あります。 .m4a.mov、および.flacを変換するための

mkdir outputs 
for f in *.mp4; do ffmpeg -i "$f" -c:a libmp3lame "outputs/${f%.mp4}.mp3"; done 

:のみ.mp4ファイルを変換するための

mkdir outputs 
for f in *.{m4a,mov,flac}; do ffmpeg -i "$f" -c:a libmp3lame "outputs/${f%.*}.mp3"; done 

何が "*" ワイルドカードを使用変換する:

mkdir outputs 
for f in *; do ffmpeg -i "$f" -c:a libmp3lame "outputs/${f%.*}.mp3"; done 
+0

上記のスクリプトを.m4a、.movなどの別のファイル数に拡張する必要がある場合はどうすればよいですか:FileInfo [] Files = d.GetFiles( "* .mp4")。Union(d.GetFiles ( "*。<他のファイル拡張子>"))。ToArray(); 。 – Raulp

関連する問題