Я попробовал это:
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
добавить два аудиопотока в один видеофайл. Но ffmpeg говорит, что количество отображений должно соответствовать количеству выходных потоков. Что здесь не так?
Я пытаюсь работать со сборкой Android FFmepg "ffmpeg для android beta". "Не работает" означает, что эта необщительная сборка FFmpeg для Android просто останавливается без сообщения об ошибке. Параметр -codec copy
не работает с этой сборкой.
Теперь я попробовал тот же набор файлов с FFmpeg, который называется инструмент командной строки, который поставляется с Ubuntu 10. Что-то (не могу сказать, откуда это). Опция -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 для Android. Вот полный вывод:
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
У вас есть идея, почему она не работает с двумя аудиопотоками?
Кстати,
ffmpeg -i input_with_first_audio_stream.avi -i second.mp3 -acodec copy -vcodec copy output_two_audio_streams.avi -newaudio
работает с обеими версиями ffmpeg, которые я использую, но первый аудиопоток воспроизводится слишком быстро (x10 или более), а второй аудиопоток воспроизводится правильно.
Заранее большое спасибо и извините за мой нестандартный вопрос и устаревшие версии ffmpeg. Но я ламер, и мне не так легко скомпилировать из исходного кода (особенно для версии Android). Я постараюсь скомпилировать обновленную версию ffmpeg с Ubuntu, но у меня мало свободного времени.