ffmpegでオーディオとビデオファイルをマージする方法

ffmpeg

オーディオファイル(.wavまたは.au形式)とビデオファイル(.mp4形式)をマージしたい

これを達成する方法を提案してください。私はこれらのファイルを新しい.mp4ビデオファイルにマージしたい。ffmpegコマンドは非常に歓迎されます

  249  Sandy  2011-05-01


ベストアンサー

オーディオの再エンコードで、ビデオとオーディオをマージします

このブログ記事から取られたこの例を参照してください。これは、次のような効果を持つものでなければなりません

ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac output.mp4

ここでは、ビデオファイルにはまだオーディオストリームが含まれていないと仮定し、入力フォーマットと同じ出力フォーマット(ここでは、MP4)を持っているとします

MP4 は PCM オーディオストリームを運ぶことができないので、上記のコマンドはオーディオをトランスコードします。必要であれば、他の任意のオーディオコーデックを使用することができます。詳細は FFmpeg Wiki を参照してください。AAC エンコーディングガイド を参照してください

オーディオやビデオのストリームが長い場合は、-shortest オプションを追加することで、1つのファイルが終了すると ffmpeg がエンコードを停止するようにすることができます

再エンコードせずに音声をコピーします

出力コンテナが、MKV のような(ほとんどの)コーデックを扱えるのであれば、オーディオストリームとビデオストリームの両方をコピーすることができます

ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv

オーディオストリームを入れ替えます

あなたの入力ビデオにはすでにオーディオが含まれており、あなたはそれを置き換える場合は、どのオーディオストリームを取るためにffmpegを伝える必要があります

ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4

-map オプション を指定すると、fffmpeg は第一入力からの第一ビデオストリームと第二入力からの第一オーディオストリームのみを出力ファイルに使用します

389  Patrick Georgi  2011-05-01


私は私の評判と最初の回答にコメントを書くことは許されていないので、私はWebMSをエンコードするときにこの問題を抱えていたので、ここで補遺。 あなたのオーディオストリームは、例えば、ビデオストリームよりも長い場合は、それをカットしなければならないか、そうでない場合は、静止画とオーディオが実行されているとして、最後のビデオフレームを持っていることになります

どちらかのストリームをカットするには、-i “file.ext “の前に -ss [hh:mm:ss] -t [ss]を使用することができます。 -ss […] はカットする開始点を定義します

ffmpeg.exe -ss 00:00:10  -t 5 -i "video.mp4" -ss 0:00:01 -t 5 -i "music.m4a" -map 0:v:0 -map 1:a:0 -y out.mp4

19  user136036  2015-01-10


コマンドプロンプト(windows+R -> Cmd+Enter)を開きます。そして、オーディオファイルとビデオファイルがあるフォルダの中に移動します。このコマンドを適用します

ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4

outPutFile.mp4 (オーディオとビデオのマージされたファイル)という名前の新しいファイルを取得します

9  UniCoder  2015-04-16


これは私には効果がありました

ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4

6  Ronald  2015-03-05


mencoderを使ってみてください。私は-audiofile引数を使っています。しかし、私は一般的にffmpegを使っているので、このアドバイスは塩を一つまみにして受け止めてください

そして、もしあなたがWindowsを使っているなら、Mediacoder (悲しいかな、もうオープンソースではありません)が動作します…基本的には多くのgnuエンコーダーといくつかの不自由なエンコーダーのフロントエンドです

1  Wyatt8740  2013-03-12


1つは、異なる長さのオーディオとビデオをマージし、また、フェードインとフェードアウトを適用したい場合には、次のように私のために働いた

ffmpeg -i Video001.mp4 -i Audio001.mp3 -af afade=t=in:st=0:d=3,afade=t=out:st=47:d=4 -c:v copy -c:a aac -shortest Output.mp4

私の場合、上記の動画は長さが51だったので、長さ3[Sec]のフェードインと4[Sec]のフェードアウト*を選択しました。フェードはフィルターでかけるので、音声をトランスコードする必要があります。上記のケースではエンコーディングをaacにしました

答えは、@PatrickGeorgiの答えに重きを置いている

0  Royi  2020-03-26


また、オーディオファイルとビデオファイルを結合するために、https://youtu.be/1IHFp2eROYkをmencoderで試してみることもできます

0  Shaurya Mehta  2020-06-06


これを行うためのPythonスクリプトを作ったので、よかったら試してみてください。githubで入手してください。https://github.com/mmakarov/replicator

またはこちらの動画をご覧ください。https://www.youtube.com/watch?v=4Uu1hS3-eQM

リプリケータは、いくつかのビデオファイル、透明オーバーレイ、テキストエリアをmp3オーディオトラックにマージするためのPythonスクリプトです。最終的な動画はオーディオトラックと同じ長さになります。動画の長さは自動的に計算されます

私は、MP3のオーディオトラックで、ビデオ上のテキスト領域を追加し、PNGの透明なオーバーレイで任意のビデオシーケンスファイルをマージしようとすると、このスクリプトを作ってきました。結果のビデオファイルは、Youtubeや他のビデオホスティングサービスにアップロードする準備ができています

お好みで変えてみてはいかがでしょうか

使用方法: 0.ターミナルを開き、次のように入力します: git clone https://github.com/mmakarov/replicato…

  1. あなたのビデオファイルを’source1.mp4’、’source2.mp4’などのようにプロジェクトディレクトリに配置します
  2. PNGの透過画像をプロジェクトディレクトリに’overlay.png’として配置します
  3. MP3ファイルを’voice.mp3’としてプロジェクトディレクトリに入れます
  4. ターミナルで実行します: python3 source-to-medium.py (ここでは’medium.mp4’が作成されます)
  5. 必要に応じてテキストエリアの内容を入力してください…source*.mp4ファイルを1つのmedium.mp4に変換するのに時間がかかります
  6. ターミナルで実行すると、python3 medium-to-fin.py …最終的な動画の長さを、voice.mp3.length() / medium.mp4.length() = silent_fin.mp4.length()で割った長さにします…また、音声トラックとしてvoice.mp3をsilent_fin.mp4に追加します
  7. ようやくyoutube_ready.mp4ファイルができました

警告:ソースにロシア語のコメントがあります

0  Maksim Makarov  2020-08-06


タイトルとURLをコピーしました