複数のオーディオトラックを含むmp4ビデオファイルがあります。残りのトラックを取り除き、1つだけ残したいと思います。どうすればよいですか?
最初にffmpeg -i file.mp4
を実行して、ファイルに存在するストリームを確認します。次のようなものが表示されます。
Stream #0.0: Video: mpeg4, yuv420p, 720x304 [PAR 1:1 DAR 45:19], 23.98 tbr, 23.98 tbn, 23.98 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
Stream #0.2: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
次に、ffmpeg -i file.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy new_file.mp4
を実行して、ビデオストリームと2番目のオーディオストリームをnew_file.mp4
にコピーします。
関連する問題-削除 すべて mp4ファイルからのオーディオトラックは次のように実行できます。
ffmpeg -i input_file.mp4 -vcodec copy -an output_file.mp4
ストリーム番号を特定します。
$ ffmpeg -i in.mp4
...
Stream #0:0: Video: ...
Stream #0:1: Audio: ...
Stream #0:2: Audio: ...
使用する -map _file_:_stream_
処理および出力するストリームを選択します
$ ffmpeg -i in.mp4 -map 0:0 -map 0:2 -vcodec copy -acodec copy out.mp4
avidemux
を試してみてください。これは、内部で1つのオーディオファイルのみを処理します(したがって、特定のトラックを1つ選択する必要があります)。 .mp4で試したことはありませんが、他の形式で動作します。
-vn
または-an
は、すべてのビデオまたはオーディオトラックを削除します。供給-vn -acodec copy
は動画を削除します。 -an -vcodec copy
はすべてのオーディオを削除します。
-vcodec copy
は、ffmpegが既存のビデオトラックを直接コピーする(そしてそれを処理/エンコードしない)ことを指定します。これを指定しない場合でも機能しますが、ffmpegは既存のビデオトラックを再エンコードする場合があり、操作により多くのCPUが使用され、かなり時間がかかる場合があります。
ffmpeg
プログラムはavconv
に置き換えられました。 avconv
の使い方はffmpeg
とよく似ているため、この投稿のすべてのコマンドは次のようになります。
avconv <old ffpmeg command line options>
Ubuntuを使用している場合は、 このリンク に従ってavconv
をインストールします。
コマンドラインでのavidemuxの使用。
(Avidemux GUIでは、上記の https://unix.stackexchange.com/a/85834/4319 で説明されているように、オーディオトラックを選択/選択解除し、ファイルを保存するだけです。すべてがコピーされます。新しいAVIへ)。
私のアクションではどのような種類のプロジェクトがSpiderMonkeyまたはTinyPyプロジェクトとして保存されているかを調べましたが、SpiderMonkey(JavaScript)プロジェクトには必要なオーディオトラック選択アクションが欠けていることがわかりましたが、TinyPy(Python)プロジェクトにはありましたそれら。
私は関係のないものをすべて削除しました(不要な数十行)。これがsome_series.py
:
#PY <- Needed to identify #
#--automatically built--
adm = Avidemux()
adm.audioClearTracks()
adm.audioAddTrack(1)
トラック1を離れますが、トラック0をドロップします。
次に、次のようなコマンドを使用して、多くのファイルのバッチ変換を実行しました。
for f in *.avi; do avidemux3_cli --nogui --load "$f" --run ../some_series.py --save ../some_series/"${f%%.rus.eng.avi}".eng.avi --quit; done
すべてをコピーしますが、必要なオーディオトラック以外はすべてドロップします。
コマンドラインからavidemuxを実行する方法は https://www.avidemux.org/admWiki/doku.php?id=tutorial:batch_processing から学んだが、=については触れられていないPythonスクリプト、JSスクリプトのみ(これは私には機能しませんでした)。