Справка по отображению ffmpeg, кодирование 1 6-канального звука в несколько дорожек

511
Beterhans

У меня есть 2 входных файла:

  • cover.jpg
  • audio.dts (6 канал)

Мой целевой файл будет MP4 с 1 видео и 3 аудио:

  • аудио 1 2-канальный AAC
  • аудио 2 6-канальный ac3
  • аудио 3 это 6 канальный дтс

Вот команда, которую я попробовал. Изображение Изображение на Видео с аудио многоканальным:

ffmpeg -loop 1 -i cover.jpg -i audio.dts \ -map 0:0 -map 1:0 -map 1:0 -map 1:0 \ -f mp4 \ -codec:v:0 libx264 -r:0 1 -profile:v:0 main -level 3.1 -pix_fmt:0 yuv420p -qmax:0 19 -qmin:0 18 \ -codec:a:0 libfaac -ac:0 2 -ar:0 44100 -q:a:0 640 -af:0 "pan=stereo| FL = FL + 0.5*FC + 1.0*BL + 1.0*SL + 0.8*LFE | FR = FR + 0.5*FC + 1.0*BR + 1.0*SR + 0.8*LFE" \ -codec:a:1 ac3 -ac:1 6 -ab:a:1 640 \ -codec:a:2 copy \ -threads 0 -y \ -shortest -t 00:00:39.000 out.mp4 

Но, похоже, те аудио опции, которые я применил к аудио № 1, также применимы к аудио № 2 и аудио № 3.

Как я могу заставить этот вариант работать только для одного трека?

1
Попробуйте закодировать аудио перед тем, как разделить файлы, а затем используйте `copy` кодек для всех аудиопотоков при мультиплексировании финального mp4. Marki555 8 лет назад 0
Это очень помогло мне, когда я делал многоканальные вещи. Это может помочь вам, но может не помочь, но посмотрите: https://trac.ffmpeg.org/wiki/AudioChannelManipulation Russell Uhl 8 лет назад 1
Вам необходимо включить полный вывод консоли из команды `ffmpeg`. LordNeckbeard 8 лет назад 0

1 ответ на вопрос

1
occvtech

Как всегда, есть несколько способов выполнения таких задач в FFmpeg.

Больше всего мне знакомо использование channelsplitфильтра для разделения ваших аудиопотоков и определения меток для каждого из них. Таким образом, вы можете выполнить различные фильтры для любого из каналов по отдельности и отобразить выходные данные для включения любой комбинации каналов, которую вы хотите.

Фильтр будет выглядеть примерно так:

ffmpeg -i [INPUT_video] -i [INPUT_3channel_audio] -filter_complex "[1:a]channelsplit[1][2][3];...." 

В этом примере мы разделили каждый из 3 каналов на новые метки: [1] [2]и [3]. Эти метки теперь можно вызывать последними и проталкивать через другие фильтры и / или отображать на конечный результат.

Надеюсь это поможет!

У меня нет проблем с аудиоканалами, но есть звуковые дорожки. У меня 1 аудио, 6 каналов, и на основании этого я хочу создать 3 версии оригинальной звуковой дорожки, как вы видите в моем примере. и 1-е видео выглядит как v: 0, а 1-е аудио называется a: 0, а 2-е a: 1. если я обращаюсь к параметру типа «-ac: a: 1 2», перекодирую 2-й звук в 2-канальную дорожку. но ffmpeg не пошел по моему пути. Beterhans 8 лет назад 0

Похожие вопросы