Так что я прошел множество тестов и до сих пор не могу передать звук для мультиплексирования через видео, используя 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 ответ1

3

Первое число в опции -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 чтобы узнать больше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .