Рекомендуемые настройки для конвертации Opus в AAC

1777
Peter K.

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

Я знаю, что (1) Opus является новейшим и более эффективным кодеком, и (2) преобразование из одного кодека с потерями в другой не рекомендуется.

Однако, поскольку я хочу использовать один и тот же файл, то есть использовать один и тот же контейнер, в Windows / iOs / car, я хочу преобразовать его в AAC или MP3.

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

Итак, какие настройки (например, ffmpeg) вы бы порекомендовали преобразовать в файл AAC в AAC, чтобы сохранить то же качество звука (я знаю, что это субъективно ...)?

Согласно youtube-dl -Fданным, оно составляет 160 Кбит / с, но при загрузке MediaInfo выдает общую скорость передачи 127 Кбит / с и частоту дискретизации 48 КГц.

192kbs был бы хорошим выбором для файла AAC? (Я предполагаю, что AAC в любом случае является лучшим выбором, чем MP3?) Я знаю, что из CD или без потерь наиболее рекомендуется VBR, но для транскодирования из Opus будет лучше CBR? И следует ли мне сохранить частоту дискретизации 48 кГц из файла opus или уменьшить до обычной 44,1 кГц AAC?

И, наконец, youtube-dl также может загрузить файл AAC размером 128 КБ. Учитывая, что опус более эффективен / лучше, качество будет выше при той же скорости передачи данных. Но будет ли перекодирование опуса в AAC (например, при 192 кбит / с / 212 кбит / с) поддерживать эту разницу в качестве, или же перекодирование (даже с более высокой скоростью передачи битов) вызовет артефакты, так что качество звука в файле AAC 192 кбит / с будет фактически хуже, чем у AAC 128 кбит файл ?

РЕДАКТИРОВАТЬ

Позвольте мне объяснить, почему я «концептуально» борюсь с пониманием того, как определить оптимизированные настройки для транскодирования.

В большинстве случаев вы начинаете с файла без потерь (например, 50 МБ wav) и выбираете настройки кодера для качества (VBR) или желаемого битрейта (CBR / ABR). Затем кодировщик выполняет фокусировку (отбрасывает неслышную информацию, сжатие и т. Д.), Что затем дает вам файл с меньшими потерями в зависимости от выбранных вами настроек. В качестве аргумента, скажем, может быть 3 МБ для 128 Кбит MP3, 5-6 МБ для VBR высшего качества (т.е. максимальные настройки для lame или qaac) и 7-8 МБ для CBR 320 Кбит).

Но в этом случае исходный файл представляет собой опус-файл объемом 5 Мб 128 Кб. Первый шаг в транскодировании состоит в том, чтобы сначала декодировать файл (в поток PCM?), А затем снова кодировать в новом формате.

Итак, насколько я понимаю, правильно, что максимальная информация в файле не превышает 5 МБ, поэтому для кодирования (и если это не является требованием для уменьшения размера файла) я должен просто использовать VBR максимально возможного качества или, возможно, высокий CBR ( 256 или 320) для захвата практически всей информации, все еще присутствующей в файле opus. Получившийся файл в любом случае не будет больше, чем 5 МБ, так как я предполагаю, что никакая новая информация не может быть изобретена / сгенерирована в процессе (я проведу некоторые эксперименты на выходных, чтобы проверить это).

Первый ответ, по-видимому, предполагает это.

2
Хех, приятно, что ты нашел мой старый ответ. Я обновил его с некоторой новой информацией. Когда я писал его в 2013 году, Opus был относительно новым, но теперь он используется гораздо чаще. slhck 5 лет назад 0
@slhck Ваш ответ был действительно полезным! Но opus, вероятно, «созрел» меньше, чем предполагалось в 2013 году. Не в отношении поддержки браузера, а в отношении использования в автономных музыкальных файлах (обычно нет / на разных платформах принят формат контейнера - ну, по крайней мере, согласно википедии. ..). Peter K. 5 лет назад 0
Да, он больше используется в реализациях YouTube и VoIP. slhck 5 лет назад 0

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

2
slhck

В целом, я бы порекомендовал взглянуть на страницу FFmpeg Wiki по кодированию AAC. Здесь вы найдете советы о том, как добиться наилучшего качества, что включает в себя:

  • использование libfdk_aacкодера вместо встроенного (кодер может иметь огромное значение по качеству!)
  • использование VBR - нет необходимости ограничивать скорость или количество битов
  • отключение фильтра верхних частот, так как по умолчанию некоторые высокие частоты теряются во время преобразования

Таким образом, будет работать следующее:

ffmpeg -i input.opus -c:a libfdk_aac -vbr 5 -cutoff 18000 output.m4a 

Это должно быть абсолютно прозрачным для всех. Вы даже можете использовать -vbr 4и проверить, можете ли вы обнаружить разницу. Я думаю, что вы не будете.


В частности, вы спрашиваете:

И, наконец, youtube-dl также может загрузить файл AAC размером 128 КБ. (…) Но сохранит ли перекодирование опус в AAC (…) эту разницу в качестве, или же перекодирование (…) вызовет артефакты, так что качество звука (…) будет на самом деле хуже?

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

Однако, если вы предполагаете, что стерео AAC со скоростью 128 кбит / с, по крайней мере, хорошего качества (но не отличного качества), вы можете отказаться от любого преобразования и использовать его напрямую, если вам это нравится. Думаю, я бы послушал оригинальные образцы Opus и AAC, которые вы скачали напрямую, и попытался сделать слепой тест - можете ли вы надежно обнаружить разницу? Если нет, просто используйте AAC и сохраните конверсию.

PS: Я слушал несколько музыкальных клипов с YouTube с вариантами Opus и AAC, и лично мне больше понравился Opus - у него, казалось, была немного более высокочастотная пространственность. Но не думайте, что это научно обоснованный вывод!


Наконец, существует поток, обсуждающий аналогичную проблему, и здесь один пользователь считает, что в кодировании VBR существует более агрессивное психоакустическое формирование, которое может усилить уже существующие артефакты при повторном кодировании файла с потерями. Он приходит к выводу, что ABR на высокой скорости передачи данных может лучше подходить для таких задач.

Если кто-то хочет узнать свой предел частоты для настроенного значения фильтра нижних частот `-cutoff` (при произвольной частоте дискретизации 44100 Гц):` ffplay -f lavfi -i sine = f = 18000`. Снижайте до тех пор, пока не услышите «визг летучих мышей» или пока ваши уши не кровоточат. В шумном офисе с открытыми наушниками у меня ~ 16100. LordNeckbeard 5 лет назад 0
@LordNeckbeard Когда вы запускаете команду (по крайней мере, на моем Mac), появляется шум, который, я думаю, связан с внезапным появлением. Этого можно избежать с помощью `sine = f = 18000, afade = d = 0.1`. slhck 5 лет назад 0
@slhck Спасибо за ваш вклад. Таким образом, используя предустановки (например, -vbr 5), кодировщик «найдет» оптимальную среднюю скорость передачи битов для сохранения качества? Я использую пресеты при копировании с источника (CD), но я подумал, что когда источник с потерями (opus 128kbs), настройка параметров вручную будет лучше. А как насчет частоты дискретизации? Установить 48 кГц вручную, как в файле opus, или оставить значение по умолчанию (что подразумевает повторную выборку на уровне 44,1 кГц, я полагаю)? Peter K. 5 лет назад 0
@PeterK Да, VBR обеспечит оптимальную скорость и качество. Частота дискретизации должна оставаться на 48 кГц, если вы не укажете другую. slhck 5 лет назад 0
@slhck Я смотрел на `libfdk_aac`, но я не думаю, что у меня есть навыки / время, чтобы сделать пользовательскую сборку ffmpeg с включенным libfdk_aac. Я предполагаю, что мог бы использовать `qaac` в качестве альтернативы (либо с командной строкой, либо с fb2k)? Но тогда мне еще предстоит выяснить рекомендуемые настройки. Также для `qaac` есть много информации для кодирования из источника (CD или без потерь), но не так много информации о рекомендуемых настройках, основанных на различных входных файлах с потерями. Peter K. 5 лет назад 0
@PeterK Какую операционную систему вы используете? Для `qaac` (который я никогда не использовал), установка` --quality 2` и `--tvbr 127` даст вам лучшее качество. По умолчанию, кажется, 90, поэтому что-то среднее между ними, вероятно, будет прозрачным. slhck 5 лет назад 0
@slhck Я использую Windows 10. Поскольку `qaac` (в основном кодировщик Apple AAC), кажется, очень рекомендуется (лучше, чем` libfdk_aac` в соответствии сhydroaud.io) и его легче использовать, я думаю, что я пойду по этому пути. Спасибо за рекомендации по настройке. Я также отредактировал свой исходный вопрос, чтобы лучше объяснить суть моего вопроса, и почему транскодирование не так понятно для меня (не имея технического аудио или фонового кодека). Ваш ответ, кажется, подтверждает это внутреннее чувство. Но, возможно, я ошибаюсь ... Peter K. 5 лет назад 0
@PeterK Ваши предположения верны! Вы не можете генерировать больше качества, чем в оригинальном файле. Выбрать самую высокую скорость VBR просто означает сохранить большую ее часть. Однако вы можете получить файл большего размера, поскольку в конечном итоге это зависит от того, сколько бит кодер выберет потратить. slhck 5 лет назад 0
@slhck Я провел несколько тестов с различными настройками качества (я использовал ffmpeg / lame для конвертации в mp3; я знаю, что aac обычно лучше, чем mp3 для низких битрейтов, но aac не играет на моей автомобильной стереосистеме, и я не хочу установить fb2k просто чтобы конвертировать несколько сотен песен). Source - это поп-песня размером 3,6 Мб (опус 126 Кб), -q: a 0 дает файл 7.1 Мб, -q: 1 6,3 Мб, -q: 2 5,3 Мб. Так что даже если opus более эффективен в кодировании, не уверен, что увеличение размера файла является разумным ... Peter K. 5 лет назад 0
@PeterK Я не уверен, что понял вашу точку зрения. Вы говорите, что увеличение размера файла не приемлемо? slhck 5 лет назад 0
@slhck Ну, увеличение файла больше, чем я ожидал. Мое "непрофессиональное" объяснение состоит в том, что декодирование опуса (в PCM?) Добавляет шум / интерполяции и что при выборе v0 (или эквивалентного) большая часть этой (я полагаю, несущественной) информации снова кодируется и сохраняется в новый файл MP3. Мне все еще неясно, имеет ли в этом случае смысл использовать более низкую настройку качества v1 или v2 или даже v3, чтобы информация, добавленная декодером opus, отбрасывалась MP3-кодером. Но это подразумевает, конечно, что кодер может иметь значение между шумом и аудио информацией ... Peter K. 5 лет назад 0
@PeterK Ах, это не совсем так, как это работает. Декодирование без потерь; новая информация не добавляется. Кодирование похоже на сгибание / сгибание листа бумаги, а декодирование - на развертывание. Вся информация есть, но, возможно, немного искажена (с «морщинами»), в зависимости от того, насколько хорошо вы можете ее сложить. MP3 менее эффективен, поэтому ваш вывод никогда не будет так хорошо сжат, как AAC. Или, если MP3 имеет тот же размер, что и AAC, он наверняка будет иметь больше искажений. Таким образом, я ожидал бы, что размер файла увеличится с MP3, и я бы придерживался довольно высокого качества настройки. slhck 5 лет назад 0
@slhck Спасибо за вашу помощь и понимание. Так что, возможно, мне все-таки стоит пойти на AAC и приложить усилия для установки fb2k с кодеком Apple AAC. Поэтому я могу использовать более высокое значение качества VBR для того же размера файла, что и MP3. Peter K. 5 лет назад 0
@PeterK Не за что. Не стесняйтесь спрашивать, если у вас есть дополнительные вопросы. slhck 5 лет назад 0
@slhck Если вам интересно, на форумах HA также обсуждается эта тема. Не уверен, что в TOU SU можно добавить ссылку на другой форум. В любом случае, кто-то порекомендовал использовать ABR, так как модель psy, используемая (true) VBR, может быть «запутана», поскольку источником является файл с потерями. Peter K. 5 лет назад 0
@PeterK Интересно! Пожалуйста, поделитесь ссылкой, и я добавлю ее в ответ. slhck 5 лет назад 0
@slhck Вот, пожалуйста, [статья] (https://hydrogenaud.io/index.php/topic,116040.0.html). Еще раз спасибо ! Peter K. 5 лет назад 0
@PeterK. Ах, спасибо! Форумы, на которых сложно найти нужную информацию :) (Я склонен теряться во всем, что не является Super User / Stack Overflow.) Я включил упоминание в свой пост. slhck 5 лет назад 0
0
Tetsujin

Не столько ответ, сколько немного «экспертное» мнение, для чего это стоит [я звукорежиссер, но не специалист по кодированию / алгоритму]

Для iOS / автомобиля вы просто заставляете iTunes для повторной выборки на 128k AAC - опция есть в самом iTunes, она будет делать новые версии только для ваших устройств - вы никогда не услышите разницы, конечно в автомобиле, и от мобильных телефонов только в беззвучном режиме окружение с серьезно дорогими наушниками.

Окно сокрушено, чтобы сохранить пространство ...

Если вы хотите архивировать на «максимуме», используйте Apple без потерь [ALAC].
Он не вернет ничего уже ушедшего, но больше не потеряет.

Кстати, сама iOS теперь может воспроизводить файлы Opus [начиная с iOS 11] - но я не знаю, будет ли это через iTunes или только в потоковом формате.

AAC не может быть без потерь, вы имеете в виду ALAC? slhck 5 лет назад 0
Я имею в виду «Apple Lossless Encoder», так что да, я, вероятно, имею в виду ALAC. [Сказал тебе, что я не техник ;-) Исправлено. Tetsujin 5 лет назад 0
Хех! Хотя использование ALAC не даст вам большой совместимости, кроме macOS (и, может быть, iOS? Я даже не знаю…) slhck 5 лет назад 0
Я предполагал, что windows / ios / car - это среда iTunes. Я думаю, что FLAC тоже будет работать, но, поскольку iTunes это не нравится, это будет та же проблема в обратном направлении. ТБХ, я обычно работаю и архивирую в WAV и добавляю все, что мне нужно, но я начинаю с нуля, а не с чужого исходного материала ;-)) Tetsujin 5 лет назад 0
@Tetsujin Спасибо! Я стараюсь, чтобы в моей музыкальной библиотеке не было разных версий файлов для разных проигрывателей (а для машины мне нужно вручную выбирать музыкальные файлы и копировать их прямо из моей библиотеки). Если бы я пошел по пути без потерь, я бы предпочел пойти на FLAC, чем на ALAC. Но предпочтение (для размера файла и универсального воспроизведения) заключается в использовании AAC (или MP3). Peter K. 5 лет назад 0