Ошибка выбора аудиопотока FFMPEG

Вопрос или проблема

[Поток] index=0 codec_name=h264
[Поток] index=1 codec_name=aac
[Поток] index=2 codec_name=mp3

ffmpeg.exe -y -i “C:\Temp\MultiAudio\Test0V1A2A.mkv” -map 0:v:0 -map 0:a:2 -map_metadata -1 -metadata title=”Test0V1A2A” -sn -dn -f MP4 -preset veryslow -crf 18 libx264 -profile:v baseline -level 3.0 -maxrate 500k -minrate 450 -bufsize 1000k -vf scale=960:540 -pix_fmt yuv420p -codec:a:2 AAC -b:a 128k “C:\Temp\MultiAudio\Test0V1A2A.MP4” -loglevel error

Поток карты ” не соответствует ни одному потоку.
Чтобы игнорировать это, добавьте вопросительный знак ‘?’ в конец карты.
Не удалось установить значение ‘0:a:2’ для параметра ‘map’: Неверный аргумент

Я в недоумении, почему я не могу выбрать второй аудиопоток с помощью вышеуказанной команды. Кто-то видит явную ошибку?

Если я исключаю раздел карты, я получаю поток 1 нормально, но когда он включен, он указывает, что нет 2 потока. Я даже загрузил последнюю стабильную 64-битную версию Windows без разрешения.
P.S.: при использовании карты скорость конверсии снижается с примерно 3x до 0.5x, что ужасно.

Ответ или решение

Когда вы сталкиваетесь с ошибкой выбора аудиопотока в FFMPEG, это может вызывать чувство недоумения, особенно при использовании командной строки для обработки медиафайлов. Рассмотрим ваш случай более подробно.

Проблема и её диагностика

При выполнении команды:

ffmpeg.exe -y -i "C:\Temp\MultiAudio\Test0V1A2A.mkv" -map 0:v:0 -map 0:a:2 -map_metadata -1 -metadata title="Test0V1A2A" -sn -dn -f MP4 -preset veryslow -crf 18 libx264 -profile:v baseline -level 3.0 -maxrate 500k -minrate 450 -bufsize 1000k -vf scale=960:540 -pix_fmt yuv420p -codec:a:2 AAC -b:a 128k "C:\Temp\MultiAudio\Test0V1A2A.MP4" -loglevel error

Вы получаете сообщение об ошибке:

Stream map '' matches no streams.
To ignore this, add a trailing '?' to the map.
Failed to set value '0:a:2' for option 'map': Invalid argument

Это сообщение означает, что FFMPEG не может найти указанный аудиопоток с индексом 2. Давайте рассмотрим детально, почему это происходит.

Структура потоков

Из приведенной вами информации о потоках:

[STREAM] index=0 codec_name=h264
[STREAM] index=1 codec_name=aac
[STREAM] index=2 codec_name=mp3

У вас есть три потока:

  • Поток 0: Видео (h264)
  • Поток 1: Аудио (aac)
  • Поток 2: Аудио (mp3)

Ошибка возникает из-за того, что вы используете -map 0:a:2, что указывает на третий аудиопоток (в нумерации с нуля). Однако, в вашем случае, допустимые индексы для аудиопотоков начинаются с 0 и заканчиваются на 1. Следовательно, поток с индексом 2 не существует, и вы получаете ошибку.

Решение проблемы

Чтобы исправить ошибку, вам нужно использовать правильный индекс аудиопотока. Если вы хотите выбрать второй аудиопоток (то есть поток с кодеком mp3), вы должны заменить 0:a:2 на 0:a:1.

Обновлённая команда будет выглядеть так:

ffmpeg.exe -y -i "C:\Temp\MultiAudio\Test0V1A2A.mkv" -map 0:v:0 -map 0:a:1 -map_metadata -1 -metadata title="Test0V1A2A" -sn -dn -f MP4 -preset veryslow -crf 18 libx264 -profile:v baseline -level 3.0 -maxrate 500k -minrate 450 -bufsize 1000k -vf scale=960:540 -pix_fmt yuv420p -codec:a:0 AAC -b:a 128k "C:\Temp\MultiAudio\Test0V1A2A.MP4" -loglevel error

Замечание о производительности

Что касается замедления скорости конверсии с использованием карты потоков (от 3x до 0.5x), это может произойти по нескольким причинам:

  1. Параметры кодирования: Вы используете -preset veryslow, что фокусируется на максимальном качестве и минимальной компрессии, но требует больше ресурсов и времени.

  2. Качество: Использование параметров, таких как -crf 18, также может замедлить процесс, так как стремится к более высокому качеству.

  3. Выбор потока: Возможное изменение параметров потока может также повлиять на производительность.

Попробуйте использовать более быстрые предустановки -preset (например, medium или fast), чтобы улучшить производительность.

Заключение

Проблема с выбором аудиопотока в FFMPEG часто может быть быстро решена правильной настройкой индексов потоков. Всегда проверяйте доступные потоки и их индексы, чтобы избежать таких ошибок. Если у вас возникнут дополнительные вопросы или ошибки, не стесняйтесь обращаться за поддержкой и уточнениями.

Оцените материал
Добавить комментарий

Капча загружается...