Итак, я провел множество тестов, но так и не смог заставить звук микшироваться с видео с помощью ffmpeg и не могу понять, где я ошибаюсь, поэтому был бы очень признателен за помощь.
У меня есть это видео. Видео Скачать
А если я запущу ffmpeg -i, то получу вот это.
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709), 366x662 [SAR 1:1 DAR 183:331], 755 kb/s, 24 fps, 24 tbr, 90k tbn, 180k tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 105 kb/s (default)
Итак, трансляция 0:0
И у меня есть этот фрагмент аудиозаписи. Скачать аудио
и когда я запускаю ffmpeg я получаю это.
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 277 kb/s
Stream #0:1: Video: png, rgb24, 400x400, 90k tbr, 90k tbn, 90k tbc
поэтому я собираюсь скопировать свой звук 0:0, чтобы заменить видеозвук 0:1 без перекодирования всего файла.
ffmpeg -i testing.mp4 -i rkelly.mp3 -c copy -map 0:1 -map 0:0 -shortest out3.mp4
решение1
Первая цифра в -map
опции — индекс входного файла. Так что если вы используете 0
дважды, вы используете только testing.mp4
.
Попробуйте вместо этого следующее:
ffmpeg -i testing.mp4 -i rkelly.mp3 -c copy -map 0:v:0 -map 1:a:0 -shortest out3.mp4
Здесь 0:v:0
выбирает первый видеопоток первого входного файла и 1:a:0
выбирает первый аудиопоток второго входного файла. В принципе, это :0
не обязательно для ваших файлов, но не помешает иметь его там в случае нескольких видео/аудиодорожек.
СмотритеЗапись в википедии FFmpeg об этой -map
опциидля большего.