Я новичок на этом форуме, и надеюсь, что кто-то может помочь. Я пытаюсь добавить вторую звуковую дорожку (chinese.ac3) в видео XVID (vts_01.avi), в котором уже есть дорожка ac3.

Эти звуковые дорожки закодированы в ac3, 48000 Гц, стерео, 128 кбит/с, и я хотел бы оставить их такими — просто мультиплексировать потоки без перекодирования.

Я использую эту команду:

ffmpeg -i vts_01.avi -vcodec copy -i Chinese.ac3 -acodec copy -map 0:0 -map 0:1 -map 1:0 muxed2.avi -newaudio

ffmpeg делает свое дело, кроме того факта, что он конвертирует вторую дорожку в mp2, 64 кбит/с.

Вот соответствующий отрывок из вывода, где ключевой частью является «Поток № 0,2: аудио: mp2, 48000 Гц, стерео, s16, 64 кбит/с», где я хотел бы «Поток № 0,2: аудио: ac3, 48000 Гц». , стерео, 128 кб/с':

Input #0, avi, from 'vts_01.avi':
  Metadata:
    encoder         : Lavf53.5.0
  Duration: 02:03:26.40, start: 0.000000, bitrate: 1954 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 720x352 [PAR 1:1 DAR 45:22], 23.98 tbr,
23.98 tbn, 23.98 tbc
    Stream #0.1: Audio: ac3, 48000 Hz, stereo, s16, 128 kb/s
[ac3 @ 018A7440] max_analyze_duration 5000000 reached at 5024000
[ac3 @ 018A7440] Estimating duration from bitrate, this may be inaccurate
Input #1, ac3, from 'Chinese.ac3':
  Duration: 02:03:26.36, start: 0.000000, bitrate: 128 kb/s
    Stream #1.0: Audio: ac3, 48000 Hz, stereo, s16, 128 kb/s
File 'muxed2.avi' already exists. Overwrite ? [y/N] y
Output #0, avi, to 'muxed2.avi':
  Metadata:
    ISFT            : Lavf53.5.0
    Stream #0.0: Video: mpeg4, yuv420p, 720x352 [PAR 1:1 DAR 45:22], q=2-31, 23.
98 tbn, 23.98 tbc
    Stream #0.1: Audio: ac3, 48000 Hz, stereo, 128 kb/s
    Stream #0.2: Audio: mp2, 48000 Hz, stereo, s16, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
  Stream #1.0 -> #0.2

Я пробовал несколько различных комбинаций, включая явное принудительное переключение потока на ac3 с помощью:

ffmpeg -i vts_01.avi -vcodec copy -i chinese.ac3 -acodec ac3 -ac 2 -ar 48000 -ab 128k -map 0:0 -map 0:1 -map 1:0 muxed2.avi -newaudio

Тот же результат.

Я также попытался назначить кодек потоку с помощью спецификатора потока (на основе http: //ffmpeg.org/ffmpeg.html#toc-Stream-specifiers-1, но мой ffmpeg не распознает эти параметры.

У меня заканчиваются вещи, чтобы попробовать.

1
JMor 29 Дек 2011 в 19:58

1 ответ

(ОП отредактировал ответ в вопросе. См. Вопрос без ответов, но проблема решена в комментариях (или дополнена в чате) )

ОП написал:

Я думаю, что я только что нашел решение

с http://ffmpeg-users .933282.n4.nabble.com/Encoding-with-multiple-Audio-tracks-td1289403.html Там Джеймс Дарли говорит:

So your command line should look like:  
ffmpeg -i INPUT [output options] OUTPUT [audio options] -newaudio [subtitle options] -newsubtitle

Затем я соответствующим образом переставил свои параметры, то есть параметры звука для новой дорожки после вывода:

ffmpeg -i vts_01.avi -vcodec copy -acodec copy -i Chinese.ac3 muxed3.avi -acodec copy -newaudio 

И теперь я получаю две звуковые дорожки в формате ac3 с правильным битрейтом.

0
2 revs 20 Мар 2017 в 12:43