国语视界

 找回密码
 立即注册
搜索
查看: 109|回复: 10

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

[复制链接]
  • TA的每日心情
    无聊
    19-11-11 21:30
  • 签到天数: 2 天

    [LV.1]初来乍到

    8

    主题

    54

    帖子

    16

    积分

    列兵

    Rank: 1

    大洋
    125
    矿工
    0
    发表于 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音轨。
  • TA的每日心情
    开心
    19-1-12 14:29
  • 签到天数: 260 天

    [LV.8]以坛为家I

    209

    主题

    3433

    帖子

    1万

    积分

    师长

    Rank: 8Rank: 8

    大洋
    103719
    矿工
    288

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

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

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

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

    使用道具 举报

    该用户从未签到

    7

    主题

    50

    帖子

    16

    积分

    列兵

    Rank: 1

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

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

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

    使用道具 举报

    该用户从未签到

    5

    主题

    299

    帖子

    145

    积分

    论坛大神

    大洋
    2199
    矿工
    0
    QQ
    发表于 19-11-24 16:33 | 显示全部楼层
    *:\THD+ac3
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    19-1-12 14:29
  • 签到天数: 260 天

    [LV.8]以坛为家I

    209

    主题

    3433

    帖子

    1万

    积分

    师长

    Rank: 8Rank: 8

    大洋
    103719
    矿工
    288

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

    发表于 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

    主题

    50

    帖子

    16

    积分

    列兵

    Rank: 1

    大洋
    1581
    矿工
    0
    发表于 19-11-24 18:44 | 显示全部楼层
    感谢两位回复!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    19-11-11 21:30
  • 签到天数: 2 天

    [LV.1]初来乍到

    8

    主题

    54

    帖子

    16

    积分

    列兵

    Rank: 1

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

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

    使用道具 举报

  • TA的每日心情
    开心
    19-1-12 14:29
  • 签到天数: 260 天

    [LV.8]以坛为家I

    209

    主题

    3433

    帖子

    1万

    积分

    师长

    Rank: 8Rank: 8

    大洋
    103719
    矿工
    288

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

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

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

    使用道具 举报

  • TA的每日心情
    无聊
    19-11-11 21:30
  • 签到天数: 2 天

    [LV.1]初来乍到

    8

    主题

    54

    帖子

    16

    积分

    列兵

    Rank: 1

    大洋
    125
    矿工
    0
     楼主| 发表于 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
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    19-11-11 21:30
  • 签到天数: 2 天

    [LV.1]初来乍到

    8

    主题

    54

    帖子

    16

    积分

    列兵

    Rank: 1

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

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

    使用道具 举报

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

    本版积分规则

    Archiver|手机版|cnlang.org

    GMT+8, 19-12-7 10:12 , Processed in 0.021656 second(s), 18 queries , Gzip On, MemCache On.

    Powered by Discuz! X3.4

    © 2001-2018 Comsenz Inc.

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