Недокументированные команды в eac3to.

Тема закрыта
 
Автор Сообщение

Серый1779 ®

Пол: Мужской

Стаж: 5 лет 5 месяцев

Сообщений: 3522

Откуда: Украина

Создавать темы 02-Мар-2019 22:25

[Цитировать]

Недокументированные команды в eac3to.-Недокументированные команды

-no2ndpass

Запретить второй проход.
Немного объяснений.
Существует два типа представления разрядности PCM: float point и integer.
- любое декодирование из lossy производится в 32-bit float point по стандарту. Именно так действует libavcodec в связке с eac3to. Затем разрядность как правило понижается (звуковые карты и большинство енкодеров обычно принимают на вход только фикс. точку) в самом декодере или сторонними средствами (например eac3to понижает разрядность сам, вне зависимости от libav), с использованием дизеринга или без.
- любые промежуточные преобразования над звуком лучше производить в макс. разрядности. Именно так работают фильтры ресэмплирования, перетяжки и микширования в eac3to - все преобразования выполняются в 64-bit float point.
- небольшие переполнения при декодировании и преобразованиях аудио - это нормально. Обычно это результат промежуточных вычислений, выполняемых в float point.
Только в float point можно представить сигнал, уровень которого >0 dB, клиппинг тут невозможен (клиппинг - это не выход уровня сигнала за предельные значение, а потеря данных вышедших за эти пределы). При переходе float→integer значения уровней округляются до ближайших и уровням > 0dB во float point присваиваются одинаковые значения в integer. Как следствие, возникает т.н. клиппинг - "обрезание сигнала". Пример:
Чтобы гарантировано избежать клиппинга автор eac3to поступил так. Любой float point сканируется программой eac3to на предмет переполнения и при нахождении этого переполнения, прежде чем произвести преобразование 64-bit Float → 24-bit Int, eac3to нормализует дорожку. Таким образом мы гарантированно избавляемся от клиппинга. Но. Правда состоит в том, что не любое переполнение ведёт к клиппингу (но, естественно, всякий клиппинг имеет в своей основе переполнение). Так что eac3to может и ошибиться, как и любая другая программа, работающая по тому же принципу (например в Azid реализован похожий механизм, но Azid только предупреждает о переполнении - по умолчанию он дорожку не нормализует).
Окончательно дать ответ есть ли клиппинг в полученном PCM или же нет может аудиоредактор. Нужно найти макс. уровень на таймлайне, нужно взять крупный план и посмотреть - есть ли срез. Если срез есть, то нужен второй проход. Если среза нет, то второй проход действительно был не нужен.
--Применительно к eac3to. Попроще.
В случае обнаружения переполнения, eac3to сообщает "clipping detected" и часто в этом ошибается, т.к. далеко не каждое переполнение ведет к клиппингу. Абсолютно точно определить наличие клиппинга можно в любом аудиоредакторе.
Факты:
- при декодировании из lossy с помощью декодеров ArcSoft, Sonic, Nero переполнение невозможно, т.к. из фильтра DirectShow PCM поступает уже в 24-bit integer - его уровень в принципе не может превысить 0 dB.
- при декодировании из lossy с помощью декодера libav возможно переполнение, т.к. libavcodec первоначально декодирует в 64-bit float point, а затем eac3to по умолчанию понижает разрядность до 24-bit integer.
- при декодировании из lossless (THD, DTS-HD MA, FLAC) переполнение невозможно в принципе. PCM распаковывается в исходную разрядность (а это фикс. точка) как из архива. То, что было запаковано в lossless - именно то и получаем при распаковке.
- при преобразованиях с потерями (ресэмплинг, перетяжка, микс) возможно переполнение, т.к. промежуточные преобразования выполняются в 64-bit float point, а затем eac3to по умолчанию понижает разрядность до 24-bit integer.
Выводы:
1). Ключ -no2ndpass имеет смысл дописывать при операциях декодирования из lossy с помощью libav и при преобразованиях аудио с потерями (ресэмплинг, перетяжка, микс). Если при этом eac3to выдаст сообщение "clipping detected", нужно будет перепровериться на предмет наличия клиппинга в аудиоредакторе.
- если клиппинг действительно образовался, то нужно повторить операцию в eac3to, но на этот раз второй проход разрешить.
- если клиппинга нет, то второй проход действительно был не нужен. При переполнении <0,5 dB (а eac3to показывает величину переполнения) вероятность среза крайне мала.
2). Ключ -no2ndpass не нужен (и более того - вреден) при операциях декодирования из lossless и при демуксе из Blu-ray со структурой Seamless Branching.
Примеры:
eac3to input.dts output.wavs -slowdown -no2ndpass
eac3to input.dtshd output.wavs
eac3to input.mp3 output.wav -no2ndpass -resampleto48000 -down16
eac3to input.aac output.wavs -down2 -resampleto44100 -no2ndpass

-mono

Выделить только центральный канал из многоканального источника и только левый канал из 2.0.
Пример:
eac3to input.dtshd output.wavs -mono

-dontPatchDts

Запретить патчинг 16bit→24bit в операциях с DTS.
Команду имеет смысл использовать при извлечении ядра DTS-HD 16-bit, но не нужно применять при декодировании.
Смысл патчинга сводится к тому, что eac3to меняет заголовок "Transmission Bit Rate" (метаданные) каждого фрейма DTS с 16-bit на 24-bit. Это позволяет повысить качество декодирования (а значит и проигрывания) при использовании некоторых декодеров (например декодеров ArcSoft и Sonic).
Пример:
eac3to input.dtshd output.dts -core -dontpatchdts

-logdts

Вывести подробную информацию о DTS(-HD).
Пример:
eac3to v3.24
command line: eac3to downloads\test.dtshd -logdts
------------------------------------------------------------------------------
+ DTS-Core
  - frameSize            2012
  - DTS-ES               +
  - channelNo            6
  - lfe                  1
  - channelDescr         6.1
  - samplingRate         48000
  - bitDepth             16
  - bitrate              1509000
  - extAudio             XCh
  - samplesPerFrame      512
  - copyHistory          1
+ DTS-HD
  - fullSize             104
  - headerSize           32
  - refClockCode         1/48000
  - frameDurationCode    1
  - activeMasks          [1], [[1]]
  + Asset [0]
    - fullSize             72
    - headerSize           14
    - corePackets          Core+XCh
    - extSubStrPackets     XLL
    - bitResolution        16
    - maxSampleRate        48000
    - totalNumChannels     7
    - activeSpeakers       C L R Ls Rs LFE Cs ($1f)
DTS Master Audio, 6.1 channels, 16 bits, 48kHz
(core: DTS-ES, 6.1 channels, 16 bits, 1509kbps, 48kHz)
Basically, if you want to know what you'll lose by extract the core, you should use the undocumented "-logdts" switch and then check out which extensions are stored in the DTS-HD blocks. If you strip off XCh or XXCh extensions, you're losing additional channels. If you strip off the X96 extension, you're losing 96khz. If you strip off the XBR extension, you're losing additional bitrate for the 5.1 channels. If you strip off the XLL extension, you're losing Master Audio. XCh, XXCh and X96 extensions can be contained in either the core or in the DTS-HD blocks, while XBR and XLL extensions can only be contained in the DTS-HD blocks.

-progressnumbers

Выводить процент выполнения работы.
В командной строке выглядит это не очень эстетично. Примерно так:
D:\test>eac3to test.dtshd test.wavs -progressnumbers
analyze: 5%
DTS Master Audio, 5.1 channels, 24 bits, 48kHz
(core: DTS, 5.1 channels, 24 bits, 1509kbps, 48kHz)
Decoding with ArcSoft DTS Decoder...
Writing WAVs...
process: 5%
process: 10%
process: 15%
process: 20%
process: 25%
process: 30%
process: 35%
process: 40%
process: 45%
process: 50%
process: 55%
Creating file "test.L.wav"...
Creating file "test.LFE.wav"...
Creating file "test.SR.wav"...
Creating file "test.SL.wav"...
Creating file "test.R.wav"...
Creating file "test.C.wav"...
process: 60%
process: 65%
process: 70%
process: 75%
process: 80%
process: 85%
process: 90%
process: 95%
process: 100%
The original audio track has a constant bit depth of 16 bits.
Superfluous zero bytes detected, will be stripped in 2nd pass.
Starting 2nd pass...
Decoding with ArcSoft DTS Decoder...
Reducing depth from 24 to 16 bits...
Writing WAVs...
process: 5%
process: 10%
process: 15%
process: 20%
process: 25%
process: 30%
process: 35%
process: 40%
process: 45%
process: 50%
process: 55%
process: 60%
process: 65%
process: 70%
process: 75%
process: 80%
Creating file "test.L.wav"...
Creating file "test.R.wav"...
Creating file "test.LFE.wav"...
Creating file "test.SR.wav"...
Creating file "test.SL.wav"...
Creating file "test.C.wav"...
process: 85%
process: 90%
process: 95%
process: 100%
The processed audio track has a constant bit depth of 16 bits.
eac3to processing took 3 seconds.
Done.

-normalize

Нормализовать дорожку. Естественно, требует второго прохода.
eac3to нормализует всегда под 99% от макс. уровня.
Пример:
eac3to input.dtshd output.wavs -down2 -phaseshift -normalize

-logmkv

you can use the undocumented switch "-logmkv" to get a tree structure of the MKV file. It's quite similar to what "mkvinfo" outputs. That way you can see whether eac3to read your MKV file correctly.
Пример:
eac3to v3.24
command line: eac3to sample.mkv -logmkv
------------------------------------------------------------------------------
EBML
  EbmlVersionId: 1
  EbmlReadVersionId: 1
  EbmlMaxIdLengthId: 4
  EbmlMaxSizeLengthId: 8
  DocTypeId: "matroska"
  DocTypeVersion: 2
  DocTypeReadVersion: 2
Segment
  Meta Seek Information
    Seek
      SeekID: (binary, len: 4)
      SeekPosition: 4099
    Seek
      SeekID: (binary, len: 4)
      SeekPosition: 4263
    Seek
      SeekID: (binary, len: 4)
      SeekPosition: 15370968
  Void: (binary, len: 4045)
  Segment Information
    TimecodeScale: 1000000
    MuxingApp: "libebml v1.0.0 + libmatroska v1.0.0"
    WritingApp: "mkvmerge v4.4.0 ('Die Wiederkehr') сборка от Oct 31 2010 21:52:48"
    Duration: 0:00:08.337
    DateUTC: 05.01.2011 5:02:10
    SegmentUID: (binary, len: 16)
  Track
    Track Entry
      TrackNumber: 1
      TrackUID: 1
      TrackType: video
      FlagLacing: 0
      MinCache: 1
      CodecID: "V_MPEG4/ISO/AVC"
      CodecPrivate: (binary, len: 35)
      DefaultDuration: 41708332
      Language: "jpn"
      Name: "Hohushki"
      Video
        PixelWidth: 1920
        PixelHeight: 1080
        DisplayWidth: 1920
        DisplayHeight: 1080
    Track Entry
      TrackNumber: 2
      TrackUID: 883804855
      TrackType: audio
      CodecID: "A_AC3"
      DefaultDuration: 32000000
      Language: "rus"
      Name: "MVO"
      Audio
        SamplingFrequency: 48000
        Channels: 6
    Track Entry
      TrackNumber: 3
      TrackUID: 3539642009
      TrackType: audio
      FlagDefault: 0
      CodecID: "A_DTS"
      Language: "jpn"
      Name: "Original"
      Audio
        SamplingFrequency: 48000
        Channels: 6
      ContentEncodings
        ContentEncoding
          ContentCompression
            ContentCompAlgo: 3
            ContentCompSettingsId: (binary, len: 4)
    Track Entry
      TrackNumber: 4
      TrackUID: 3666471089
      TrackType: subtitle
      FlagDefault: 0
      FlagLacing: 0
      CodecID: "S_TEXT/UTF8"
  Void: (binary, len: 1159)
  Cluster
MKV, 1 video track, 2 audio tracks, 1 subtitle track, 0:00:08, 24p /1.001
1: h264/AVC, Japanese, 1080p24 /1.001
   "Hohushki"
2: AC3, Russian, 5.1 channels, 448kbps, 48kHz
   "MVO"
3: DTS, Japanese, 5.1 channels, 24 bits, 1509kbps, 48kHz
   "Original"
4: Subtitle (SRT)

-ignoreEncrypt

Игнорировать защиту Blu-ray / HD DVD.

-keepFullRange

Сохранить fullrange flag.
fullrange flag говорит о том, что используется полный (PC, 0-255), а не урезанный (TV, 16-235) диапазон цветов. Обычно флаг сохранять не требуется.
Why does eac3to remove the fullrange flag from h264 streams?
Because there are almost always wrong, mostly due to a bug in the old Tandberg h.264 encoder that most European tv stations use.

-Xmb

Вырезать первые X Mb. Операция без пересжатия.
Команда применима ко всем поддерживаемым форматам. Может быть полезна чтобы сделать сэмпл.
Например, вырежем первые 23 Mb аудиодорожки:
eac3to input.dts output.dts -23mb

-analyzeBitdepth

Определить разрядность (бит/сэмпл) дорожки.
Понятие "разрядность" имеет смысл употреблять при разговоре о PCM и, как следствие, при разговоре о форматах сжатия без потерь, lossless (THD, DTS-HD MA, FLAC), т.к. только эти форматы полностью сохраняют исходный PCM.
Величину бит/сэмпл невозможно определить в случае подавляющего большинства форматов сжатия с потерями, lossy (DTS, AC3, E-AC3, AAC, MP123 и др.).
- В случае DTS в заголовок каждого фрейма пишется т.н. "Transmission Bit Rate" - это информация о разрядности исходного PCM (до кодирования). Эту информацию показывают eac3to, MediaInfo и др.
- В случае AC3, E-AC3, AAC, MP123 никакая информация о разрядности исходного PCM в метаданных не прописывается. То, что показывает MediaInfo в этом случае - брехня полная.
В случае DTS-HD MA и FLAC eac3to считывает информацию о разрядности с заголовка самого первого фрейма аудиодорожки. Крайне редко эта информация бывает ошибочна (см. примеры ниже).
В случае THD информация о разрядности в метаданных не прописывается, а единственный способ узнать ее - декодировать дорожку полностью или воспользоваться -analyzeBitdepth (что, по сути, то же декодирование).
Примеры:

DTS-HD MA

eac3to v3.24
command line: eac3to test.dtshd -analyzebitdepth
------------------------------------------------------------------------------
DTS Master Audio, 5.1 channels, 24 bits, 48kHz
(core: DTS, 5.1 channels, 24 bits, 1509kbps, 48kHz)
Decoding with ArcSoft DTS Decoder...
The original audio track has a constant bit depth of 16 bits.
eac3to processing took 4 seconds.
Done.

FLAC

eac3to v3.24
command line: eac3to test.flac -analyzebitdepth
------------------------------------------------------------------------------
FLAC, 5.1 channels, 0:00:48, 24 bits, 689kbps, 48kHz
Decoding FLAC...
The original audio track has a constant bit depth of 16 bits.
eac3to processing took 1 second.
Done.

THD

eac3to v3.24
command line: eac3to "test.thd+ac3" -analyzebitdepth
------------------------------------------------------------------------------
TrueHD/AC3, 5.1 channels, 48kHz
(embedded: AC3, 5.1 channels, 640kbps, 48kHz)
Extracting TrueHD stream...
Decoding with libav/ffmpeg...
The original audio track has a constant bit depth of 16 bits.
eac3to processing took 11 seconds.
Done.

-2pass

"-2pass" activates 2 pass mode (can speedup seamless branching processing)
You never have to use the "-2pass" option, eac3to will do 2 passes in any case where it's necessary, regardless of whether you used the "-2pass" option or not. The only sense of that option is to tell eac3to that probably 2 passes are necessary. In that situation eac3to does some things differently to speed up the processing a bit. It's only a performance optimization for situations where 2 passes are necessary. But it's never necessary to use that option...
The 2pass mode must be activated for every track you want it be active for. You should only use it for audio tracks.

-neroaacenc=

Указать расположение NeroAACEncoder'а. По умолчанию eac3to ищет его в своей собственной директории.
-neroaacenc="C:\Whatever\neroAacEnc.exe"

-log=

Выбрать место сохранения лог-файла.
-log="C:\Whatever\log.txt"

-full

Предотвращает дизеринг при декодировании с помощью libav.
По умолчанию все форматы сжатия с потерями eac3to-libav декодирует в 64-bit float point PCM, а затем eac3to понижает разрядность до 24-bit integer, используя TPDF Dither.
С командой -full мы получим на выходе исходный 64-bit float point PCM (контейнер на выбор: WAV/W64/RF64)

-simple

Прописать в WAV старый тип заголовка.
Команда может быть использована, чтобы получить файл WAV, совместимый с устаревшими программами, т.к. по умолчанию в подавляющем большинстве случаев eac3to муксит PCM в WAVE_FORMAT_EXTENSIBLE. Например SFSE не понимает WAVE_FORMAT_EXTENSIBLE.
"-simple" forces the output WAV file to have compatible (old style Lossless PCM) header instead of modern WAVE_FORMAT_EXTENSIBLE. Not recommended for multi-channel files. Mono and stereo files produced with this switch are just fine and can be processed by some older tools, which have no support for modern type header.
Пример:
eac3to input.mp3 output.wav -simple

-double7

Апконверт из конфигурации 6.1 в 7.1.
Сигнал с канала BACK_CENTER будет распределен по каналам BACK_LEFT и BACK_RIGHT с соответствующим понижением уровня (-3dB). В итоге будет получен равноценный 7.1, т.е.:
BL = 0,707 * BC
BR = 0,707 * BC
Все остальные каналы остаются на месте. Такой апмикс вполне корректен.
Команда может быть полезна при необходимости создать FLAC 7.1 из DTS-HD MA 6.1 (многие устройства вывода не поддерживают конфигурацию 6.1).
В eac3to v.3.24 имеется баг - программа путает каналы местами. Выход: дописывать: -0,1,2,3,5,6,4
Правильный апмикс:
eac3to input.wav output.wavs -double7 -0,1,2,3,5,6,4
Описание команд, которые не рассмотрены выше, можно посмотреть в таблице тут https://en.wikibooks.org/wiki/Eac3to/How_to_Use
[Профиль] [ЛС]
Показать сообщения:    
Тема закрыта

Текущее время: 26-Апр 23:06

Часовой пояс: UTC + 3



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы