ffmpegは2つのオーディオストリームをビデオに追加します


2

私はこれを試しました:

ffmpeg -i /sdcard/video/transcode/video.avi -map 0:0,0 -i /sdcard/video/transcode/first.mp3 -map 1:0,1  -i /sdcard/video/transcode/second.mp3 -map 2:0,2 -acodec copy -vcodec py /sdcard/video/transcode/Output.avi

1つのビデオファイルに2つのオーディオストリームを追加します。しかし、ffmpegは、マッピングの数が出力ストリームの数と一致する必要があると言います。ここで何が間違っていますか?


私はFFmepg "ffmpeg for android beta"の Androidビルドを使用しようとしています。「動作しない」とは、FFmpegのこの非通信Androidビルドがエラーメッセージを表示せずに停止することを意味します。-codec copyオプションでは、このビルドでは動作しません。

ここで、Ubuntu 10に付属のコマンドラインツールと呼ばれるFFmpegで同じファイルセットを試しました。何か(どこから来たのかわかりません)。-codec copyオプションでは、あまりにもこのFFmpegのでは動作しません。

ここに完全な出力:

m30x:~/movie/Film$ ffmpeg -i input.avi -i first.mp3 -i second.mp3 -map 0 -map 1 -map 2 -acodec copy -vcodec copy output.avi
FFmpeg version SVN-r0.5.9-4:0.5.9-0ubuntu0.10.04.1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --extra-version=4:0.5.9-0ubuntu0.10.04.1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Jun 12 2012 16:27:34, gcc: 4.4.3
[NULL @ 0x93cfd10]looks like this file was encoded with (divx4/(old)xvid/opendivx) -> forcing low_delay flag

Seems stream 0 codec frame rate differs from container frame rate: 30000.00 (30000/1) -> 25.00 (25/1)
Input #0, avi, from 'input.avi':
  Duration: 01:30:33.00, start: 0.000000, bitrate: 901 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 576x432, 25 tbr, 25 tbn, 30k tbc
Input #1, mp3, from 'first.mp3':
  Duration: 01:30:32.84, start: 0.000000, bitrate: 63 kb/s
    Stream #1.0: Audio: mp3, 22050 Hz, stereo, s16, 64 kb/s
Input #2, mp3, from 'second.mp3':
  Duration: 01:30:32.84, start: 0.000000, bitrate: 63 kb/s
    Stream #2.0: Audio: mp3, 22050 Hz, stereo, s16, 64 kb/s
Number of stream maps must match number of output streams

UbuntuとAndroidバージョンのFFmpegでは、1つのオーディオストリームのみをビデオストリームとマージできます。ここに完全な出力:

ffmpeg -i input.avi -i first.mp3 -map 0 -map 1 -acodec copy -vcodec copy output.avi
FFmpeg version SVN-r0.5.9-4:0.5.9-0ubuntu0.10.04.1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --extra-version=4:0.5.9-0ubuntu0.10.04.1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Jun 12 2012 16:27:34, gcc: 4.4.3
[NULL @ 0x9bfad10]looks like this file was encoded with (divx4/(old)xvid/opendivx) -> forcing low_delay flag

Seems stream 0 codec frame rate differs from container frame rate: 30000.00 (30000/1) -> 25.00 (25/1)
Input #0, avi, from 'input.avi':
  Duration: 01:30:33.00, start: 0.000000, bitrate: 901 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 576x432, 25 tbr, 25 tbn, 30k tbc
Input #1, mp3, from 'first.mp3':
  Duration: 01:30:32.84, start: 0.000000, bitrate: 63 kb/s
    Stream #1.0: Audio: mp3, 22050 Hz, stereo, s16, 64 kb/s
Output #0, avi, to 'output.avi':
    Stream #0.0: Video: mpeg4, yuv420p, 576x432, q=2-31, 90k tbn, 25 tbc
    Stream #0.1: Audio: libmp3lame, 22050 Hz, stereo, s16, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #1.0 -> #0.1
Press [q] to stop encoding
frame= 6157 fps=6156 q=-1.0 size=   31667kB time=246.28 bitrate=1053.3kbits/s   

2つのオーディオストリームで機能しない理由はありますか?

ところで、

ffmpeg -i input_with_first_audio_stream.avi -i second.mp3 -acodec copy -vcodec copy output_two_audio_streams.avi -newaudio

私が使用しているffmpegの両方のバージョンで動作しますが、最初のオーディオストリームは速すぎます(x10以上)が、2番目のオーディオストリームは正しく再生されます。

私の型にはまらない質問と古いバージョンのffmpegに感謝します。しかし、私は怠け者であり、ソースからコンパイルするのはそれほど簡単ではありません(特にAndroidバージョンの場合)。Ubuntuでffmpegの最新バージョンをコンパイルしようとしますが、自由な時間はあまりありません。


完全なffmpegコンソール出力を含めてください。
llogan

LordNeckbeardさん、申し訳ありませんが、完全なコンソールメッセージを出力しないffmpegのAndroidバージョンを使用しています。Videoファイルとmp3ファイルは、それぞれ1つのストリームで構成される必要があります。
トッシンハウゼン

この答えの解決策を得ましたか?
アフマドアルスラン

回答:


4

ドキュメントの-map-codecオプションを参照してください。例:

ffmpeg -i video.avi -i audio1.mp3 -i audio2.mp3 -map 0 -map 1 -map 2 -codec copy output

以下も参照してください。


ご回答ありがとうございます。私はマップオプションのドキュメントと最初の2つのスレッドbetörenを読んでいますが、私がやりたいことの例はありません。コードも機能しません。ubuntus ffmpegでファイルのセットを試し、出力を投稿します。
トッシンハウゼン

@tossinhausenほとんどの場合、古いビルドを使用しているか、FFmpegを使用していません。Ubuntuが現在提供しているのはFFmpegのものではありません。「機能しない」は説明的ではありません。少なくとも実際のエラーメッセージまたは完全なコンソール出力を提供してください。
-llogan

@TossinHausenあなたのffmpegはおそらく私の例の構文をサポートするには古すぎます。新しいビルドを使用するか、古い減価償却-newaudioオプションを調べてください。Ubuntuの場合は、FFmpegコンパイルするか、既にコンパイルされた静的ビルドを使用するか、Jon SeverinssonのFFmpeg PPAを使用します(最新のものが必要な場合)。
-llogan

0

アンドロイド市場で見られるffmpegのアンドロイドバージョンをコンパイルするために、旧バージョンが使用されたようです。出力が減少したため、どのバージョンを見つけることができませんでした。Jon SeverinssonのFFmpeg PPAでは、LordNeckbeardは、実際のffmpegのドキュメントで説明されているように、すべてが正常に機能することを提案しました。-newaudioは2回目に実行されましたが、最初のオーディオトラックが破損していました。私はubuntuの下でAndroid用の最新バージョンを構築しようとします。私は時間を見つけて、フォーラムでここに報告するときにこれを行います。LordNeckbeardのご協力に感謝します!投げ込む

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.