如何读取 mp4 视频的 Mdat 原子?

6

我正在尝试解析一个mp4文件,已经成功解析了moov,但不确定如何使用moov信息来解析mdat

我的目标是从mdat中获取轨道信息(如元数据)以及如果可能的话从中获取音视频帧。

目前正在遵循QuickTime文件格式规范

尝试过使用Sample-to-Chunk Atoms,但我的所有stsc(20字节)都像这样:

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0]
[0 0 0 1]
[0 0 0 1 0 0 0 1]
[0 0 0 1]

    fmt.Println(binary.BigEndian.Uint32(buf[0:4])) //4
    fmt.Println(binary.BigEndian.Uint32(buf[4:8])) //4
    fmt.Println(binary.BigEndian.Uint32(buf[8:16])) //8
    fmt.Println(binary.BigEndian.Uint32(buf[16:20])) //4

目前不知道如何处理和解析 mdat 原子。

如果有帮助,将不胜感激!


2
你试过这个库吗?https://pkg.go.dev/github.com/abema/go-mp4 - Tiago Peczenyj
如果不行的话,您可以尝试定义自己的结构并使用此链接进行解析:https://nicedoc.io/ghostiam/binstruct - Tiago Peczenyj
尝试将其读取为 buf[0:3]buf[4:7] 等等……?你的前四个字节是 [0] [1] [2] [3],所以为什么要读取到 [4] - VC.One
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接