1. 命令行语法

根据输入源 (1. 单独的音频或视频文件 2. 已用容器封装好的文件 3. 碟片目录) 分为3类

1.1 使用单独的音频或者视频文件作为输入源

在这个类别里我们处理例如单独的音频文件 ( AC3, TrueHD, DTS-HD, WAV 等 ) 或者单独的视频文件 ( raw H.264, VC-1, MPEG-2 ) 的输入源。在这种情况下命令应该长这个样子:

eac3to input.file+input.file.2 output.file -options
  • input.file ~ 它是被处理的文件。eac3to能接受各种音频格式例如 RAW, (L)PCM, WAV (PCM only), W64 ( 类似于没有4GB限制的WAV ), RF64 (类似 W64), AC3, E-AC3, DTS, DTS-ES, DTS-96/24, DTS-HD Hi-Res, DTS-HD Master Audio, MLP, TrueHD, TrueHD/AC3, FLAC, 视频格式例如 VC-1, H.264, MPEG-2
  • +input.file.2 ~ 多个输入源 (同一格式) 是被接受的。当预处理的文件被拆分成好几部分时非常有用。使用 + 符号进行连接
  • output.file ~ 这是eac3to将创建的输出文件。它可能是音频格式例如 RAW, (L)PCM, WAV (PCM only), WAVs ( 多个单声道 WAV files, PCM only ), W64, RF64, AC3, DTS, FLAC, 视频格式例如 VC-1, H.264, MPEG-2 或者 Matroska (MKV) 容器. eac3to 也可以 ( 仅 ) 将音频数据标准输出 (stdout) 以供其他程序进一步处理
  • -options ~ 这里你能设定 eac3to 的操作选项。并不是所有选项都适用于所有输入/输出格式。如果你没设定选项,就会走默认设置。当你输入单独的音频/视频时,以下选项可用 (已删除不常用的代码) :
选项输入源必须是输出文件必须是用于
-192, -224, -384, -448, -640任何格式AC3设定 AC3 编码的码率为 192-640 ( 448 默认用于 立体声,640 默认用于 5.1 声道 )
-768, -1536任何格式DTS设定 DTS 编码的码率为 768 或者 1536 (默认数值)
-coreDTS-HD 或者 TrueHDDTS 或者 AC3提取 DTS-HD 的 DTS 核心 或者 TrueHD 的 AC3 核心
±100ms任何格式任何格式应用正负延迟
-mono任何格式任何格式立体声音频只解码左声道,多声道音频只解码中央声道
-double7任何 6.1 声道的音频任何格式将 6.1 声道上混至 7.1 声道 (复制一条 Back Center声道)
-down6任何 6.1 或者 7.1 声道的音频任何格式将 7 个或者 8 个声道 下混至 6 个声道
-downDpl任何格式任何格式将任何多声道音频下混至立体声 ( Dolby Pro Logic II )
-downStereo任何格式任何格式将任何多声道音频下混至立体声
-mixlfe任意 x.1 声道任何格式进行下混至立体声时也把 LFE 声道混进去
-down16任何格式任何格式将解码后的音频数据降为 14-23 bit
-full任何格式任何格式将结果以 64-bit 浮点 PCM 格式输出
-changeTo24.000任何格式任何格式将源文件的帧率转换为 "23.976", "24.000", "25.000"...
-resampleTo48000任何格式任何格式重采样音频至 "44100" Hz, "48000" Hz, "88200" Hz 或者 "96000" Hz
-r8brain任何格式任何格式使用 r8brain 进行重采样而不是默认的 SSRC
-quality=0.35任何格式m4a / mp4指定 Nero AAC 编码质量 ( 0.00=最低; 1.00=最高; 默认 0.5 )
-8LPCM / RAW任何格式手动指定输入的 LPCM / RAW 文件的声道数
-16 / -24LPCM / RAW任何格式手动指定输入的 LPCM / RAW 文件的 bit
-48000LPCM / RAW任何格式手动指定输入的 LPCM / RAW 文件的采样率
-overrideLPCM / RAW任何格式用手动指定的 LPCM / RAW 的值强制覆盖自动检测
-logdtsDTS 显示 DTS 音轨的详细信息
-progressnumbers 给处理进程增加一个进度条显示
-log="filename.txt" 保存日志为 "filename.txt"
-shutdown 处理完以后自动关机


示例

  • 使用 Nero AC3 解码器 (默认) 和 Aften AC3 编码器将一个 AC3 音轨转码成 384 kbps:
eac3to input.ac3 output.ac3 -384
  • 使用 Nero AC3 解码器 (默认) 和 Surcode DTS 编码器将一个 E-AC3 音轨转码成 1536 kbps 的DTS:
eac3to input.eac3 output.dts
  • 使用 ArcSoft DTS-HD 解码器 (默认) 和 FLAC 编码器将一个 DTS-HA MA 音轨转码成 FLAC:
eac3to input.dtshd output.flac
  • 使用 libav 编码器将一个 DTS 音轨转换成 AC3:
eac3to input.dts output.ac3 -libav
  • 使用 Nero TrueHD 解码器 and Aften AC3 编码器将一个 TrueHD 音轨转码成 640 kbps 的 AC3:
eac3to input.thd output.ac3 -nero
  • 使用 MLP libav / ffmpeg 解码器 (默认) 解码一个 24bit / 96 kHz 的 MLP 音轨,下采样至 16bit / 44.1 kHz 并将数据标准输出:
eac3to input.mlp output.stdout -down16 -resampleTo44100
  • 提取 DTS-HD 音轨的 DTS 核心:
eac3to input.dtshd output.dts -core
  • 提取 TrueHD 音轨的 AC3 核心:
eac3to input.thd output.ac3 -core
  • 将一条 E-AC3 音轨延迟 +178ms:
eac3to input.eac3 output.eac3 +178ms
  • 将一条 16 bit / 48 kHz 5.1 声道的 LPCM 音轨分流成 6 条单独的 WAV 音轨,且让 eac3to 自动检测其参数:
eac3to input.pcm output.wavs
  • 将一条 16 bit / 48 kHz 5.1 声道的 LPCM 音轨分流成 6 条单独的 WAV 音轨,且手动指定其参数:
eac3to input.pcm output.wavs -override -16 -48000 -6
  • 使用 Aften AC3 编码器将一条 BD 的 7.1 声道的 PCM 音轨转码成 5.1 声道 640 kbps 的 AC3:
eac3to input.pcm output.ac3 -down6
  • 将 H.264 文件封装成 MKV:
eac3to input.h264 output.mkv


1.2 使用已用容器封装好的文件作为输入源

这些文件包含一条或多条音视频轨道。通过输入这类文件,eac3to 可以列出里面的所有轨道并编号。这样的话用户能明确地指定需要处理的轨道。 eac3to 命令长这个样子:

eac3to input.file+input.file.2 trackno: output.file -options trackno: output.file -options


  • input.file ~ 支持 evo, m2ts, ts, vob, mkv, mpls 等格式
  • +input.file.2 ~ 同 1.1,用 + 连接多个分离的文件 ( 比如 DVD 里分离的 VOB ,BD 里分离的 m2ts )。对于 BD 也能直接输入 mpls 文件
  • output.file ~ 同 1.1
  • trackno: ~ 就是上面说的eac3to给每个轨道的编号
  • -options ~ 同 1.1



选项输入源必须是输出文件必须是用于
-demux任何容器 ( EVO, VOB, M2TS, TS... ) 文件 分流输入源的第一条视频轨道以及所有音频和字幕轨道
filename.txt任何带有章节的容器 ( EVO, VOB, M2TS, TS... ) 文件 提取章节


为了展示用法,我们使用 HD-DVD 中的两个 EVO 文件作为示范:

eac3to FEATURE_1.EVO+FEATURE_2.EVO


我们将会得到这样一个列表:

EVO, 1 video track, 3 audio tracks, 5 subtitle tracks, 1:55:33
1: Joined EVO file
2: h264/AVC, 1080p24 /1.001 (16:9) with pulldown flags
3: E-AC3, 5.1 channels, 1536kbps, 48khz, dialnorm: -27 dB, -65ms
4: E-AC3, 5.1 channels, 768kbps, 48khz, dialnorm: -27 dB, -76ms
5: AC3, 2.0 channels, 192kbps, 48khz, dialnorm: -27 dB, -92ms
6: Subtitle
7: Subtitle
8: Subtitle
9: Subtitle
10: Subtitle


我们能从上表中获取输入源包含的所有轨道信息以及 eac3to 给它们的编号,接下来使用对应编号就能处理对应的轨道

  • 分流上述例子里的第一条视频和所有音频,字幕轨道
eac3to feature1.evo+feature2.evo -demux
  • 分流一张 BD 里的 主视频 00001.m2ts 的视频轨道 ( 编号为2 ) :
eac3to 00001.m2ts 2: video.h264
  • 分流一张 BD 里的 3个分离的m2ts文件 ( 00001.m2ts, 00002.m2ts 以及 00003.m2ts ) 的视频轨 ( 编号为 2 ), TrueHD 音频轨 ( 编号为 3 ), 以及 E-AC3 音频轨 ( 编号为 5 ) :
eac3to 00001.m2ts+00002.m2ts+00003.m2ts 2: video.vc1 3: audio1.thd 5: audio2.eac3
  • 封装一张 BD 里的 主视频 00001.m2ts 单独的视频轨 ( 编号为 2 ) 为 MKV, 并将 DTS-HD ( 编号为 4 ) 音频转换成 FLAC
eac3to 00001.m2ts 2: video.mkv 4: audio.flac
  • 封装一张 BD 里的 主视频 00001.m2ts 单独的视频轨 ( 编号为 2 ) 为 MKV, 将 DTS-HD ( 编号为 4 ) 音频转换成 FLAC 并转换为 16 bit, 并使用 libav / ffmpeg E-AC3 解码器 将 E-AC3 音频 ( 编号为 5 ) 转码成 768 kbps 的 DTS
eac3to 00001.m2ts 2: video.mkv 4: audio1.flac -down16 5: audio2.dts -768 -libav


1.3 使用碟片目录作为输入源

碟片可以是 HD-DVD 或者 BD, 这里以 BD “Nobody knows” 为例:


第1步:

eac3to "BD目录"

这个时候可能 eac3to 会报错,有可能是你的文件没下完整,或者结构本身不完整。前者需要自行重新下载,后者的话使用压缩包的VBS文件来补齐目录即可。


第2步:

这个时候可能出现多个选项,一般情况下选择时间最长的那个。不过有时候也不一定是最长的那个,这个时候你最好去BDMV / STREAM 目录下确定正片是哪个m2ts,然后看看对应的m2ts是哪个序号。看准前面的序号后,再次输入

eac3to "BD目录" 序号


第3步:

按照 1.2 中的写法即可



附件:eac3to+补齐Blu-ray结构


本文大量翻译自 wikibooks ,同时也主观的修改和添加了一些内容。