Хотите понять кодирование с помощью Opus для максимального качества звука в FFmpeg. Битрейт застрял на 96kbps?

Хотите понять кодирование с помощью Opus для максимального качества звука в FFmpeg. Битрейт застрял на 96kbps?

Я новичок в FFmpeg, но я усвоил большую часть основ. Я пытаюсь понять, как кодировать аудио с помощью Opus. Мои знания немного слабы, когда дело касается аудио, битрейтов, частоты дискретизации и Гц.

Мой входной файл MP4 (музыкальный клип) закодирован с использованием звука AAC со следующими параметрами звука FFprobe:

[sample_rate] => 44100
[channels] => 2
[channel_layout] => stereo
[bit_rate] => 127999

Я использую следующую команду FFmpeg для преобразования этого файла MP4 в WEBM:

ffmpeg -i input.mp4 -map 0:s? -map 0:v -map 0:a? -vf scale=-2:720 -movflags +faststart -c:v libvpx-vp9 -crf 32 -b:v 1024k -c:a libopus output.webm

При запуске команды shell я получаю следующее предупреждение:

[libopus @ 0x55ccad7dc440] No bit rate set. Defaulting to 96000 bps.

Насколько я понимаю, Opus должен иметь переменный битрейт (VBR), включенный по умолчанию, и он должен определять и соответствовать входному аудиобитрейту. Однако, похоже, что opus не соответствует исходным 127 999 бит/с.

Означает ли это, что Opus снижает качество звука? Музыка на выходе звучит действительно хорошомне, но у меня проблемы со слухом. Из того, что я прочитал, многие люди могут воспринимать разницу в качестве звука до битрейта 256kbps, и эти музыкальные клипы предназначены для просмотра аудиторией, а не только мной. Качество музыки имеет для них первостепенное значение.

Я также не хочу устанавливать постоянный битрейт -b:a 256k, потому что вход может быть не таким уж высоким, и это просто тратит дисковое пространство, пытаясь масштабировать. Я бы хотел, чтобы opus -vbrмаксимизировал качество звука, по крайней мере, такое же хорошее, как исходное качество ввода! Но если 96k так же высок, как Opus -vbr, это означает, что мы теряем много качества звука, если вход имеет более высокий битрейт точности, верно? Я предполагаю, что более высокий битрейт во входном файле эквивалентен более высокому качеству звука?

Помогите мне понять. Какие флаги вы бы использовали в команде FFmpeg для Opus, чтобы максимизировать качество звука?

решение1

Кодер libopus не поддерживает кодирование на основе качества.

Битрейт по умолчанию основан на количестве каналов. Вам придется вручную задать битрейт. Он может достигать 256k * # of channels. VBR включен по умолчанию, и это означает, что не все аудиокадры будут ограничены фиксированным битрейтом. Он будет колебаться вокруг целевого битрейта.

Связанный контент