国语视界

 找回密码
 立即注册
查看: 5771|回复: 12

[音频技术] 蓝光原盘demux出来的truehd音频文件无法重新导入

[复制链接]

18

主题

104

帖子

33

积分

列兵

大洋
279
阅读权限
10
发表于 19-11-24 11:19 | 显示全部楼层 |阅读模式
本帖最后由 yellowolf 于 19-11-24 11:26 编辑

demux这一步一共测试了eac3to和ffmpeg两个软件。
eac3to查看音频和字幕流的情况:
  1. "D:\Software (x86)\_Encode\eac3to\eac3to.exe" F:\xxx 1)
  2. M2TS, 1 video track, 7 audio tracks, 5 subtitle tracks, 1:40:03
  3. 1: Chapters, 34 chapters
  4. 2: h265/HEVC, 2160p24 /1.001 (16:9), 10 bits
  5. 3: TrueHD/AC3 (Atmos), English, 7.1 channels, 48kHz, dialnorm: -28dB
  6.    (embedded: AC3, 5.1 channels, 640kbps, 48kHz, dialnorm: -27dB)
  7. 4: E-AC3, English, 7.1 channels, 1024kbps, 48kHz, dialnorm: -28dB
  8.    (core: AC3, 5.1 channels, 576kbps, 48kHz, dialnorm: -28dB)
  9. 5: AC3, English, 5.1 channels, 640kbps, 48kHz, dialnorm: -27dB
  10. 6: AC3, English, 2.0 channels, 320kbps, 48kHz, dialnorm: -27dB
  11. 7: AC3, English, 2.0 channels, 320kbps, 48kHz, dialnorm: -27dB
  12. 8: AC3, Chinese, 2.0 channels, 448kbps, 48kHz
  13. 9: AC3, Chinese, 5.1 channels, 384kbps, 48kHz, 300ms
  14. 10: Subtitle (PGS), English
  15. 11: Subtitle (PGS), Chinese
  16. 12: Subtitle (PGS), Chinese
  17. 13: Subtitle (PGS), Chinese
  18. 14: Subtitle (PGS), Chinese
复制代码

eac3to提取音频和字幕流:
  1. "D:\Software (x86)\_Encode\eac3to\eac3to.exe" F:\xxx 1) 3: 1.thd
复制代码

ffmpeg查看流的情况:
  1. C:\Users\yellow\Downloads\ffmpeg>ffmpeg -i bluray:F:\xxx -playlist 4
  2. Input #0, mpegts, from 'bluray:F:\xxx':
  3.   Duration: 01:39:56.75, start: 4198.333333, bitrate: 52458 kb/s
  4.   Program 1
  5.     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
  6.     Stream #0:1[0x1100]: Audio: truehd (AC-3 / 0x332D4341), 48000 Hz, 7.1, s32 (24 bit)
  7.     Stream #0:2[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 640 kb/s
  8.     Stream #0:3[0x1101]: Audio: eac3 (AC-3 / 0x332D4341), 48000 Hz, 7.1, fltp, 1024 kb/s
  9.     Stream #0:4[0x1102]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 640 kb/s
  10.     Stream #0:5[0x1103]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 320 kb/s
  11.     Stream #0:6[0x1104]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 320 kb/s
  12.     Stream #0:7[0x1105]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 448 kb/s
  13.     Stream #0:8[0x1106]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s
  14.     Stream #0:9[0x12a0]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
  15.     Stream #0:10[0x12a1]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
  16.     Stream #0:11[0x12a2]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
  17.     Stream #0:12[0x12a3]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
  18.     Stream #0:13[0x12a4]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
复制代码

ffmpeg提取音频和字幕流:
  1. ffmpeg -i bluray:F:\xxx -playlist 4 -map 0:1 -c copy 1.thd  -map 0:2 -c copy 2.ac3  -map 0:3 -c copy 3.eac3  -map 0:4 -c copy 4.ac3  -map 0:5 -c copy 5.ac3  -map 0:6 -c copy 6.ac3  -map 0:7 -c copy 7.ac3  -map 0:8 -c copy 8.ac3  -map 0:9 -c copy 9.sup  -map 0:10 -c copy 10.sup  -map 0:11 -c copy 11.sup  -map 0:12 -c copy 12.sup  -map 0:13 -c copy 13.sup
复制代码


两个软件生成的thd文件二进制不同,但大小非常接近(分别是4,646,844,908、4,646,764,292)。根据额外的测试,这两个thd都是不含5.1 AC3 core的。
重新导入这一步用了tsmuxer,在添加thd文件的时候提示不能识别格式,eac3to和ffmpeg生成的两个thd文件都是如此。用POTPLAYER播放,发现时长不对,由1:40:03变成了1:03:01,但内容是完整的,就像被倍速了一样。

求指点如何demux以生成可被重新利用的thd音轨,最好是能包含core的thd音轨。

274

主题

4866

帖子

6万

积分

炊事员

大洋
315594
阅读权限
120

灌水之王热心会员论坛元老王者至尊

发表于 19-11-24 13:36 | 显示全部楼层
沒core,用eac3to加core,改名thd,再导入ts就可以了。

potplayer直接播放次世代,时长错误是正常的,需要封装才能正常播放。

具体操作搜索技术区帖子即可。
回复 支持 反对

使用道具 举报

7

主题

74

帖子

36

积分

列兵

大洋
2255
阅读权限
10
发表于 19-11-24 15:57 | 显示全部楼层
gumfifa 发表于 19-11-24 13:36
沒core,用eac3to加core,改名thd,再导入ts就可以了。

potplayer直接播放次世代,时长错误是正常的,需要 ...

老师能否截图说明一下EAC3TO 如何加CORE ,改名导入TS,谢谢
回复 支持 反对

使用道具 举报

13

主题

918

帖子

1313

积分

论坛大神

大洋
20751
阅读权限
130
发表于 19-11-24 16:33 | 显示全部楼层
*:\THD+ac3
回复 支持 反对

使用道具 举报

274

主题

4866

帖子

6万

积分

炊事员

大洋
315594
阅读权限
120

灌水之王热心会员论坛元老王者至尊

发表于 19-11-24 16:34 | 显示全部楼层
dwnxm 发表于 19-11-24 15:57
老师能否截图说明一下EAC3TO 如何加CORE ,改名导入TS,谢谢

这个很简单,一个命令的事。
比如,无core的是test.ac3,

命令行
eac3to test.ac3 test.thd+ac3

生成的改后缀名thd或ac3,拖入ts收工。
回复 支持 反对

使用道具 举报

7

主题

74

帖子

36

积分

列兵

大洋
2255
阅读权限
10
发表于 19-11-24 18:44 | 显示全部楼层
感谢两位回复!
回复 支持 反对

使用道具 举报

18

主题

104

帖子

33

积分

列兵

大洋
279
阅读权限
10
 楼主| 发表于 19-11-24 18:57 | 显示全部楼层
gumfifa 发表于 19-11-24 16:34
这个很简单,一个命令的事。
比如,无core的是test.ac3,

大大,请问ffmpeg也能如法炮制加core吗?
回复 支持 反对

使用道具 举报

274

主题

4866

帖子

6万

积分

炊事员

大洋
315594
阅读权限
120

灌水之王热心会员论坛元老王者至尊

发表于 19-11-24 20:19 | 显示全部楼层
yellowolf 发表于 19-11-24 18:57
大大,请问ffmpeg也能如法炮制加core吗?

没用过,ffmpeg好像不能作此操作
回复 支持 反对

使用道具 举报

18

主题

104

帖子

33

积分

列兵

大洋
279
阅读权限
10
 楼主| 发表于 19-11-24 20:52 | 显示全部楼层
gumfifa 发表于 19-11-24 20:19
没用过,ffmpeg好像不能作此操作

我折腾了好多天了没成功,ffmpeg直接把这条次世代音轨识别为两个独立的音频流。而且如果尝试把两个流用map封装至一个音频文件,还会报错(说明它们确实不是独立的音频流)。
好像没有一个能完美支持demux各种UHD原盘的软件。eac3to不支持7.1 E-AC3;tsmuxer加载部分肉酱盘的播放列表mpls文件时只能识别出第1个m2ts文件,从第2个起就是乱码。
我只想用python编写一个能批量demux中文音频的程序,每个方案都遇到不可逾越的障碍,真是欲哭无泪。

点评

如果DIY过的肉酱盘tsMuxer识别报错,你试过未DIY的会不会报错吗?能正常播放不代表mpls一定没问题...  发表于 19-11-24 21:12
回复 支持 反对

使用道具 举报

18

主题

104

帖子

33

积分

列兵

大洋
279
阅读权限
10
 楼主| 发表于 19-11-24 21:17 | 显示全部楼层
yellowolf 发表于 19-11-24 20:52
我折腾了好多天了没成功,ffmpeg直接把这条次世代音轨识别为两个独立的音频流。而且如果尝试把两个流用ma ...

未DIY的原盘没有测试过,我后面测试一下。
对于tsmuxer,我研究了它的源码,确实是有BUG,它没有根据HEAD给出的长度信息跳过当前playitem的保留区段,导致从第2个m2ts起的信息全部都错位。改正这个BUG以后,就可以正常识别出所有的m2ts文件了。
回复 支持 反对

使用道具 举报

10

主题

3583

帖子

733

积分

连长

大洋
42765
阅读权限
40
发表于 20-3-4 08:56 | 显示全部楼层
gumfifa 发表于 19-11-24 16:34
这个很简单,一个命令的事。
比如,无core的是test.ac3,

学习了!谢谢
回复 支持 反对

使用道具 举报

0

主题

62

帖子

12

积分

禁止发言

大洋
207
阅读权限
0
发表于 20-3-19 17:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表