[解決済み] FFMPEG muxの映像と音声(別の映像から) - マッピングの問題
質問
ある動画の音声を、音声のない別の動画に(1回のコマンドで)配置したいのですが、どうすればよいですか?
ffmpeg.exe -i video1_noAudio.mov -i video2_wAudio.mov -vcodec copy -acodec copy video1_audioFromVideo2.mov
というのが正しい方法なのでしょうが、私はそれで混乱してしまいました。
解決する方法を教えてください。
どのように解決するのですか?
入力の概要
input_0.mp4
には目的のビデオストリームがあり
input_1.mp4
には希望するオーディオストリームがあります。
で
ffmpeg
では、ストリームはこのようになります。
$ ffmpeg -i input_0.mp4 -i input_1.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input_0.mp4':
Duration: 00:01:48.50, start: 0.000000, bitrate: 4144 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 4014 kb/s, SAR 115:87 DAR 1840:783, 23.98 fps, 23.98 tbr, 16k tbn, 47.95 tbc (default)
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 124 kb/s (default)
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'input_1.mp4':
Duration: 00:00:30.05, start: 0.000000, bitrate: 1754 kb/s
Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x480 [SAR 8:9 DAR 4:3], 1687 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc (default)
Stream #1:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 55 kb/s (default)
ID番号
ffmpeg
は、入力ファイルやストリームをインデックス番号で参照する。フォーマットは
input_file_id:input_stream_id
. このため
ffmpeg
は 0 からカウントし始めるので、ストリーム
1:1
からの音声を参照します。
input_1.mp4
.
ストリーム指定子
で強化することができます。
ストリーム指定子
. 例えば
ffmpeg
に、最初の入力から最初のビデオストリームが欲しいことを伝えます (
0:v:0
) からの最初のビデオストリームと、2 番目の入力からの最初のオーディオストリーム (
1:a:0
). 私はこの方法がより効率的で好きです。また、偶発的なマッピングが起こりにくいという点でも
1:1
はあらゆるタイプのストリームを参照することができますが
2:v:3
は3番目の入力ファイルの4番目のビデオストリームを参照するだけです。
例
この例では
-map
オプションは
ffmpeg
で、どのようなストリームが必要かを指定します。からビデオをコピーするには
input_0.mp4
から、音声は
input_1.mp4
:
$ ffmpeg -i input_0.mp4 -i input_1.mp4 -c copy -map 0:0 -map 1:1 -shortest out.mp4
次の例も同じことをします。
$ ffmpeg -i input_0.mp4 -i input_1.mp4 -c copy -map 0:v:0 -map 1:a:0 -shortest out.mp4
-
-map 0:v:0
は次のように訳すことができる。0
)、ビデオストリームの種類を選択する (v
), 最初のビデオストリーム (0
) -
-map 1:a:0
は次のように訳すことができます。1
)、オーディオストリームの種類を選択する (a
), 最初のオーディオストリーム (0
)
追加メモ
-
と
-c copy
では、ストリームは ストリームがコピーされた にコピーされ、再エンコードされないので、品質が落ちることはありません。もし再エンコードしたい場合は FFmpeg Wikiをご覧ください。H.264 エンコーディングガイド . -
は
-shortest
オプションは、出力の持続時間を最短の入力ストリームの持続時間と一致させます。 -
を参照してください。
-map
オプションのドキュメント をご覧ください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン