FLAC

Список разделов Другое Аудиоформаты

Описание: Аудиоформаты, конвертация и другие связанные вопросы

Сообщение #41 postED » 25.08.2018, 02:24

Провел тут самоликбез по ffmpeg-овскому энкодеру флаки, что основан на наработках альтернативного flake. Имеет степени сжатия 0-12, и 11-12 считаются non-subset (могут возникнуть сложности при воспроизведении на железках). Немного инфы из мануалов:
Код: Выделить всё
Levels 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 and 10 should generate subset-compatible streams, 11 and 12 should not. The difference is that 11 and 12 are allowed to use a much larger predictor (32) order which is not allowed in the subset. Other than that, there is no subset-incompatible behaviour.
Код: Выделить всё
[flac @ 000000000034ff60]  compression: 0
[flac @ 000000000034ff60]  lpc type: Fixed pre-defined coefficients
[flac @ 000000000034ff60]  prediction order: 2, 3
[flac @ 000000000034ff60]  order method: estimate
[flac @ 000000000034ff60]  partition order: 2, 2
[flac @ 000000000034ff60]  block size: 1152
[flac @ 000000000034ff60]  lpc precision: 15

[flac @ 000000000034ff60]  compression: 1
[flac @ 000000000034ff60]  lpc type: Fixed pre-defined coefficients
[flac @ 000000000034ff60]  prediction order: 0, 4
[flac @ 000000000034ff60]  order method: estimate
[flac @ 000000000034ff60]  partition order: 2, 2
[flac @ 000000000034ff60]  block size: 1152
[flac @ 000000000034ff60]  lpc precision: 15

[flac @ 0000000002c2ff60]  compression: 2
[flac @ 0000000002c2ff60]  lpc type: Fixed pre-defined coefficients
[flac @ 0000000002c2ff60]  prediction order: 0, 4
[flac @ 0000000002c2ff60]  order method: estimate
[flac @ 0000000002c2ff60]  partition order: 0, 3
[flac @ 0000000002c2ff60]  block size: 1152
[flac @ 0000000002c2ff60]  lpc precision: 15

[flac @ 0000000002bfff60]  compression: 3
[flac @ 0000000002bfff60]  lpc type: Levinson-Durbin recursion with Welch window
[flac @ 0000000002bfff60]  prediction order: 1, 6
[flac @ 0000000002bfff60]  order method: estimate
[flac @ 0000000002bfff60]  partition order: 0, 3
[flac @ 0000000002bfff60]  block size: 4608
[flac @ 0000000002bfff60]  lpc precision: 15

[flac @ 0000000002b2ff60]  compression: 4
[flac @ 0000000002b2ff60]  lpc type: Levinson-Durbin recursion with Welch window
[flac @ 0000000002b2ff60]  prediction order: 1, 8
[flac @ 0000000002b2ff60]  order method: estimate
[flac @ 0000000002b2ff60]  partition order: 0, 3
[flac @ 0000000002b2ff60]  block size: 4608
[flac @ 0000000002b2ff60]  lpc precision: 15

[flac @ 0000000002b8ff60]  compression: 5
[flac @ 0000000002b8ff60]  lpc type: Levinson-Durbin recursion with Welch window
[flac @ 0000000002b8ff60]  prediction order: 1, 8
[flac @ 0000000002b8ff60]  order method: estimate
[flac @ 0000000002b8ff60]  partition order: 0, 8
[flac @ 0000000002b8ff60]  block size: 4608
[flac @ 0000000002b8ff60]  lpc precision: 15

[flac @ 0000000002b2ff60]  compression: 6
[flac @ 0000000002b2ff60]  lpc type: Levinson-Durbin recursion with Welch window
[flac @ 0000000002b2ff60]  prediction order: 1, 8
[flac @ 0000000002b2ff60]  order method: 4-level
[flac @ 0000000002b2ff60]  partition order: 0, 8
[flac @ 0000000002b2ff60]  block size: 4608
[flac @ 0000000002b2ff60]  lpc precision: 15

[flac @ 000000000034ff60]  compression: 7
[flac @ 000000000034ff60]  lpc type: Levinson-Durbin recursion with Welch window
[flac @ 000000000034ff60]  prediction order: 1, 8
[flac @ 000000000034ff60]  order method: log search
[flac @ 000000000034ff60]  partition order: 0, 8
[flac @ 000000000034ff60]  block size: 4608
[flac @ 000000000034ff60]  lpc precision: 15

[flac @ 0000000002bcff60]  compression: 8
[flac @ 0000000002bcff60]  lpc type: Levinson-Durbin recursion with Welch window
[flac @ 0000000002bcff60]  prediction order: 1, 12
[flac @ 0000000002bcff60]  order method: 4-level
[flac @ 0000000002bcff60]  partition order: 0, 8
[flac @ 0000000002bcff60]  block size: 4608
[flac @ 0000000002bcff60]  lpc precision: 15

[flac @ 0000000002b9ff60]  compression: 9
[flac @ 0000000002b9ff60]  lpc type: Levinson-Durbin recursion with Welch window
[flac @ 0000000002b9ff60]  prediction order: 1, 12
[flac @ 0000000002b9ff60]  order method: log search
[flac @ 0000000002b9ff60]  partition order: 0, 8
[flac @ 0000000002b9ff60]  block size: 4608
[flac @ 0000000002b9ff60]  lpc precision: 15

[flac @ 0000000002b2ff60]  compression: 10
[flac @ 0000000002b2ff60]  lpc type: Levinson-Durbin recursion with Welch window
[flac @ 0000000002b2ff60]  prediction order: 1, 12
[flac @ 0000000002b2ff60]  order method: full search
[flac @ 0000000002b2ff60]  partition order: 0, 8
[flac @ 0000000002b2ff60]  block size: 4608
[flac @ 0000000002b2ff60]  lpc precision: 15

[flac @ 0000000002bbff60]  compression: 11
[flac @ 0000000002bbff60]  lpc type: Levinson-Durbin recursion with Welch window
[flac @ 0000000002bbff60]  prediction order: 1, 32
[flac @ 0000000002bbff60]  order method: log search
[flac @ 0000000002bbff60]  partition order: 0, 8
[flac @ 0000000002bbff60]  block size: 4608
[flac @ 0000000002bbff60]  lpc precision: 15

[flac @ 000000000035ff60]  compression: 12
[flac @ 000000000035ff60]  lpc type: Levinson-Durbin recursion with Welch window
[flac @ 000000000035ff60]  prediction order: 1, 32
[flac @ 000000000035ff60]  order method: full search
[flac @ 000000000035ff60]  partition order: 0, 8
[flac @ 000000000035ff60]  block size: 4608
[flac @ 000000000035ff60]  lpc precision: 15
Код: Выделить всё
FLAC encoder AVOptions:
  -lpc_coeff_precision <int>        E...A.... LPC coefficient precision (from 0 to 15) (default 15)
  -lpc_type          <int>        E...A.... LPC algorithm (from -1 to 3) (default -1)
     none                         E...A....
     fixed                        E...A....
     levinson                     E...A....
     cholesky                     E...A....
  -lpc_passes        <int>        E...A.... Number of passes to use for Cholesky factorization during LPC analysis (from 1 to INT_MAX) (default 2)
  -min_partition_order <int>        E...A.... (from -1 to 8) (default -1)
  -max_partition_order <int>        E...A.... (from -1 to 8) (default -1)
  -prediction_order_method <int>        E...A.... Search method for selecting prediction order (from -1 to 5) (default -1)
     estimation                   E...A....
     2level                       E...A....
     4level                       E...A....
     8level                       E...A....
     search                       E...A....
     log                          E...A....
  -ch_mode           <int>        E...A.... Stereo decorrelation mode (from -1 to 3) (default auto)
     auto                         E...A....
     indep                        E...A....
     left_side                    E...A....
     right_side                   E...A....
     mid_side                     E...A....
  -exact_rice_parameters <boolean>    E...A.... Calculate rice parameters exactly (default false)
  -multi_dim_quant   <boolean>    E...A.... Multi-dimensional quantization (default false)
  -min_prediction_order <int>        E...A.... (from -1 to 32) (default -1)
  -max_prediction_order <int>        E...A.... (from -1 to 32) (default -1)
Для дальнейшего увеличения сжатия можно попробовать ключем -lpc_type сменить алгоритм LPC с levinson на cholesky ценой незначительного падения скорости кодирования. Ключ -lpc_passes регулирует количество проходов cholesky - чем выше значение, тем ниже скорость кодирования. Стандартно 2, разумные значения от 2 до 10.
Ключ -exact_rice_parameters 1 еще мизерно увеличивает сжатие
Ключ -multi_dim_quant 1 для самых мазохистов терпеливых. Скорость словно при серьезном видеокодировании :insane:.
FLAC -8 // Storage
Opus --bitrate 96 // Portable
postED M
Бывалый
Аватара
Откуда: Криворіжжя
Репутация: 55
С нами: 8 лет 11 месяцев

Сообщение #42 Azaza » 07.09.2018, 00:22

postED писал(а):block size: 4608
Такие файлы хоть и не являются non-subset, но на деле могут вызывать проблемы у некоторых железных плееров, которые не поддерживают размер блока больше 4096. Пример1, пример 2

А какую команду в ffmpeg нужно использовать, чтобы увидеть эту информацию?
[flac @ 000000000034ff60] compression: 0
[flac @ 000000000034ff60] lpc type: Fixed pre-defined coefficients
[flac @ 000000000034ff60] prediction order: 2, 3
[flac @ 000000000034ff60] order method: estimate
[flac @ 000000000034ff60] partition order: 2, 2
[flac @ 000000000034ff60] block size: 1152
[flac @ 000000000034ff60] lpc precision: 15
Аудиофилия - это болезнь,поражающая головной мозг.Набор профилактически-превентивных мер против аудиофилии крайне скуден - техническое образование, умение мыслить логически и наличие здравого смысла.
Azaza M
Бывалый
Аватара
Репутация: 105
С нами: 2 года 1 месяц

Сообщение #43 postED » 07.09.2018, 03:41

Azaza писал(а):А какую команду в ffmpeg нужно использовать, чтобы увидеть эту информацию?
Не знаю. Нашел я эту инфу на xiph'овском mailing list. Наиболее достоверную инфу можно получить читая исходники энкодера.
FLAC -8 // Storage
Opus --bitrate 96 // Portable
postED M
Бывалый
Аватара
Откуда: Криворіжжя
Репутация: 55
С нами: 8 лет 11 месяцев

Пред.

Вернуться в Аудиоформаты