Объедините два аудиоканала (стерео) в один (моно) на GSM6.10 с помощью FFMPEG

27

Я хотел бы знать, возможно ли объединить стереозвук в монофонический файл аудиофайла GSM6.10 с помощью FFMPEG. Если это так, пожалуйста, предоставьте команду для достижения этой цели.
Иначе, возможно ли конвертировать GSM6.10 в WAV PCM с помощью FFMPEG? Затем я мог бы объединить каналы в WAV PCM.

Если есть другой бесплатный инструмент, который может это сделать, я тоже могу попробовать.

Рон Харлев
источник

Ответы:

42

Способ "микширования" из стерео в моно в любом поддерживаемом файле в ffmpeg выглядит так:

ffmpeg -i file.ext -ac 1 file_mono.ext

Бит «-ac 1» указывает ffmpeg выводить только 1 аудиоканал, т.е. моно. По умолчанию эта операция сохранит ваш формат файла, но вернет битрейт к значению ffmpeg по умолчанию, равному 64 КБ. Если вы хотите более высокий битрейт, вы можете сделать:

ffmpeg -i file.ext -ac 1 -ab 192k file_mono.ext

... заменяя 192k на ваш предпочтительный битрейт.

Обратите внимание, что ваша установка ffmpeg должна поддерживать ваш конкретный кодек GSM, чтобы это работало должным образом. Я знаю, что некоторые аудио в кодировке GSM поддерживаются в ffmpeg через libgsm, но я никогда не имел дело с файлами GSM. Однако я успешно преобразовал другие типы файлов (MP3) в моно без помех.

Райан Тейт
источник
3
Это действительно микширование или просто удаление каналов?
Джонни
Из документации фильтра «pan»: «Обратите внимание, что ffmpeg интегрирует систему понижающего (и повышающего) микширования по умолчанию, которая должна быть предпочтительной (см. Параметр« -ac »), если у вас нет особых потребностей».
Стоп Harm Моника
Как входные, так и выходные файлы должны быть только аудиофайлами. Вход не может быть видео.
Кевин
1
Манипуляции с аудиоканалами «Микшируйте один стереопоток в монопоток. Оба канала стереопотока будут микшироваться в поток:»ffmpeg -i stereo.flac -ac 1 mono.flac
Джоэл Пурра
@Kevin - входные данные могут быть видеофайлом, я только что проверил (с или без -vn)
Берри Цакала
7

Ответ выше работает в том случае, если вы все еще хотите конвертировать между форматами, но для длинных файлов это может занять много времени. Или, может быть, вы не хотите снова конвертировать, что ухудшает качество, и поэтому вы можете просто захотеть скопировать поток. Использование -codec: a и -ac 1 одновременно не работает, но в соответствии с документацией к фильтру панорамирования ffmpeg, если соблюдены определенные условия (например, вы не настраиваете уровни каналов или не смешиваете два канала в один) , он распознает этот случай и сообщит: «Обнаружено чистое сопоставление каналов» и выполнит потоковое копирование, что намного быстрее.

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

ffmpeg -i infile.ext -codec:v copy -af pan="mono: c0=FL" outfile.ext
mondaugen
источник
0

Я знаю, что это возможно с sox .... я использую sox для манипулирования каналами, kdenlive и audacity для мягкого редактирования, и ffmpeg для ремиксов. просто давая вам знать, что хорошо сработало для меня в прошлом.

RobotHumans
источник
0

Чтобы сохранить видео, я использовал комбинацию из двух ответов выше:

ffmpeg -i infile -codec:v copy -ac 1 -ab 192k outfile

Это дало мне достаточное решение.

орел
источник