ffmpeg продолжает преобразовывать второй аудиопоток ac3 в mp2 - PullRequest
1 голос
/ 29 декабря 2011

Я новичок в этом форуме и надеюсь, что кто-то может помочь. Я пытаюсь добавить вторую звуковую дорожку (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 Ответ

0 голосов
/ 27 января 2015

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

ОП написал:

Кажется, я только что нашел решение

из http://ffmpeg -пользователей.933282.n4.nabble.com / Кодирование с несколькими звуковыми дорожками-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 с правильным битрейтом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...