我想用ffmpeg从蓝光的m2ts文件中提取truehd音频流。实际上,所有这些m2ts文件都有7个音频流,这些音频流可以由eac3to检测到:
M2TS, 1 video track, 7 audio tracks, 5 subtitle tracks, 1:40:03
1: Chapters, 34 chapters
2: h265/HEVC, 2160p24 /1.001 (16:9), 10 bits
3: TrueHD/AC3 (Atmos), English, 7.1 channels, 48kHz, dialnorm: -28dB
(embedded: AC3, 5.1 channels, 640kbps, 48kHz, dialnorm: -27dB)
4: E-AC3, English, 7.1 channels, 1024kbps, 48kHz, dialnorm: -28dB
(core: AC3, 5.1 channels, 576kbps, 48kHz, dialnorm: -28dB)
5: AC3, English, 5.1 channels, 640kbps, 48kHz, dialnorm: -27dB
6: AC3, English, 2.0 channels, 320kbps, 48kHz, dialnorm: -27dB
7: AC3, English, 2.0 channels, 320kbps, 48kHz, dialnorm: -27dB
8: AC3, Chinese, 2.0 channels, 448kbps, 48kHz
9: AC3, Chinese, 5.1 channels, 384kbps, 48kHz, 300ms
10: Subtitle (PGS), English
11: Subtitle (PGS), Chinese
12: Subtitle (PGS), Chinese
13: Subtitle (PGS), Chinese
14: Subtitle (PGS), Chinese
当我使用ffmpeg对每m2ts进行多路分解工作时,就会出现问题。
通过运行ffmpeg.exe -hide_banner -i "F:\xxx\BDMV\STREAM\00055.m2ts" -map 0:1 01.thd
,获得文件01.thd。但是,通过运行ffprobe 01.thd
,表明此文件存在错误,因为缺少持续时间信息:
Input #0, truehd, from '0x1100-00055.thd':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Audio: truehd, 48000 Hz, 7.1, s32 (24 bit)
如果我运行ffmpeg.exe -hide_banner -i "F:\xxx\BDMV\STREAM\00055.m2ts"
,可以发现ffmpeg显示了一个附加的音频流,因为它可以独立识别7.1 TrueHD音频流中的嵌入式5.1 AC3流:
Input #0, mpegts, from 'F:\xxx\BDMV\STREAM\00055.m2ts':
Duration: 00:00:48.62, start: 4198.333333, bitrate: 50005 kb/s
Program 1
Stream #0:0[0x1011]: Video: hevc (Main 10) (HDMV / 0x564D4448), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 23.98 tbc
Stream #0:1[0x1100]: Audio: truehd (AC-3 / 0x332D4341), 48000 Hz, 7.1, s32 (24 bit)
Stream #0:2[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 640 kb/s
Stream #0:3[0x1101]: Audio: eac3 (AC-3 / 0x332D4341), 48000 Hz, 7.1, fltp, 1024 kb/s
Stream #0:4[0x1102]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 640 kb/s
Stream #0:5[0x1103]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 320 kb/s
Stream #0:6[0x1104]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 320 kb/s
Stream #0:7[0x1105]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 448 kb/s
Stream #0:8[0x1106]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s
Stream #0:9[0x12a0]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
Stream #0:10[0x12a1]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
Stream #0:11[0x12a2]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
Stream #0:12[0x12a3]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
Stream #0:13[0x12a4]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
如何使ffmpeg生成正确的.thd文件,其中包含流0:1的持续时间信息? 并尽可能使ffmpeg保持嵌入式5.1核心流(测试结果表明该核心流已被剥离)?