LINUX.ORG.RU

FFMPEG портит файлы.

 ,


2

1

Перегоняю аудио-файлы через ffmpeg скриптом:

#!/bin/sh
mkdir convert
for f in *.mp3;
do
ffmpeg -i "$f" -c:a libfdk_aac -vbr 1 -vn -ar 8000 -ac 1 -q:a 1 -b:a 8k convert/$f.aac;
done 

Внезапно оказалось, что последние 10-20% файлов пустые. Даже не пустые, а файлы битые. За 10-20% до окончания файла воспроизведение прерывается. Практически каждый файл обрезан и концовки нет. Почему это и как этого избежать?

У некоторых файлов вообще остается только самое начало. Первые 10% файла есть, остальное отрезано..

★★★★★

Последнее исправление: LightDiver (всего исправлений: 2)

Ответ на: комментарий от kirill_rrr

Note, the VBR setting is unsupported and only works with some parameter combinations

На это можно не обращать внимание, в vbr он кодит все равно 1-5 (5 максимальное качество, примерно 192 kbps).

anonymous
()
Ответ на: комментарий от anonymous

В интернете ходит улучшенный билд FDK, модифицированный в EZ CD Audio Converter и выдранный оттуда https://audiophilesoft.ru/load/coders_utils/fdkaac/7-1-0-80
поддерживает f32, значения vbr выше 5, не так сильно режет ВЧ фильтр. Кстати, ВЧ фильтр FDK по умолчанию сильно их режет, надо указывать самому, например -cutoff 18000. -vbr 5 единственный режим (из vbr), в котором фильтр отключен.

anonymous
()
Ответ на: комментарий от anonymous

Winamp

Тем не менее MP3 и AAC декодеры Winamp с включенным ReplayGain работают в 32 бит и предотвращают клиппинг, преобразование в 16 бит происходит потом. https://audiophilesoft.ru/publ/my/winamp_research/11-1-0-256 - Раздел Вопрос клиппинга

Я процитирую:

Как мы помним, по результатам предыдущего теста AIMP3 разочаровал нас декодированием lossy форматов, выполняемом в режиме с фиксированной точкой. Это приводило к неминуемому клиппингу для файлов, в которых содержится сигнал, превышающий допустимый уровень. Давайте теперь проверим, как дела обстоят у Winamp.

Я загрузил в Winamp OGG файл, содержащий клиппинг глубиной 6 дБ, и попробовал вывести аудио в режиме WASAPI shared, 32-bit float. В foobar2000 весь сигнал от декодера и до вывода шел в формате с плавающей точкой, и подобные действия приводили к срабатыванию limiter APO. В Winamp же клиппинг всё равно наблюдался, а плагин Maiko докладывал о поступлении данных с декодера в формате 24 бит:

То есть изначально плеер не располагает возможностью борьбы с клиппингом в lossy с помощью лимитера. Давайте теперь задействуем декодер FFSoX.

Но это ничего не меняет. Этот декодер также работает в режиме с фиксированной точкой. А ReplayGain с OGG Vorbis работать отказался — ни в самом Winamp, ни в FFSoX. Но с MP3 RG работает. Кстати, давайте посмотрим, как справляется плеер хотя бы с клиппингом в MP3.

Для проверки я создал специальный MP3 файл, к которому применил усиление +6 дБ (путем ручной установки усиления RG и его применения к MP3 данным в foobar2000).

Итак, новости на этот раз хорошие — Winamp сумел предотвратить клиппинг средствами встроенного обработчика ReplayGain. Также ReplayGain в Winamp работает с AAC (контейнер MP4/M4A).

В данном режиме Winamp выполнил нормализацию аудио до 0 dBFS. Всё это говорит о том, что декодеры lossy в плеере всё-таки работают в режиме с плавающей точкой (или он включается при включении ReplayGain). А преобразование в фиксированную точку происходит на одной и последующих этапов тракта (за выбор 16 или 24 бит, видимо, и отвечает галочка поддержки 24 бит).

anonymous
()
30 июня 2019 г.

При долгом тесте багов оказалось чуть больше. Изредка звук в файле портится. Появляются заикания вместо звука постоянные в некоторых местах файла. Но это очень редко, может секунд 5-30 из десятков часов.

А вот концовка каждого файла обрезается всегда непонятно почему. Секунды этак на две.

LightDiver ★★★★★
() автор топика
Ответ на: комментарий от Deleted

При декодировании тоже замечательно ухудшается. Аппаратные ресамплеры обычно гумно (хотя программные тоже, в той же альзе минимально приемлемый наверно speex_medium), и libmad тоже гумно (просто гумно, удалите его, он вам не понадобится _никогда_).

anonymous
()
Ответ на: комментарий от anonymous

Далеко не все гумно, что программные, что аппаратные. У X-Fi звуковух хороший ресемплер, у sox, ffmpeg тоже, у ASUS. Speex это только в pulse задрали качество вниз. У Avidemux отличный ресемплер, в Audacity тоже.

anonymous
()
Ответ на: комментарий от anonymous

Спасибо за ссылку. Но... ты музыку слушаешь или графики смотришь? На комплексном сигнале даже клиппинг не всегда заметен.
Есть еще сэмплы
https://forum.audacityteam.org/download/file.php?id=18385
https://forum.audacityteam.org/download/file.php?id=18386
Если даже слышны небольшие искажения (а на графике выше 19 кГц), на реальном сигнале скорее всего не услышишь.

anonymous
()
Ответ на: комментарий от iZEN

FDK хороший кодер. Жалко, что 16 bit only (без сторонних патчей). А это чревато клиппингом и ffmpeg микшер в 16 бит сильно занижает уровень (например, при 5.1>2.0), чтобы его избежать.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.