首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析这个特定于苹果的MPEG文件头?

如何解析这个特定于苹果的MPEG文件头?
EN

Stack Overflow用户
提问于 2019-10-18 21:08:30
回答 2查看 390关注 0票数 3

我有一个MPEG文件,开头如下:

代码语言:javascript
复制
   0:  00 0f 6d 79 5f 66 69 6c  65 6e 61 6d 65 2e 6d 70  ..my_filename.mp
  10:  67 00 04 fc 00 00 f0 00  b2 10 39 a8 b2 10 39 ad  g.........9...9.
  20:  0f 6d 79 5f 66 69 6c 65  6e 61 6d 65 2e 6d 70 67  .my_filename.mpg
  30:  03 92 3b 40 00 00 00 00  03 7a b5 7c 03 7a d7 d0  ..;@.....z.|.z..
  40:  00 4d 6f 6f 56 54 56 4f  44 01 00 01 2a 00 80 00  .MooVTVOD...*...
  50:  00 00 00 00 36 b2 83 00  00 04 fc b2 10 39 a8 b2  ....6........9..
  60:  10 39 ad 00 00 00 00 00  00 00 00 00 00 00 00 00  .9..............
  70:  00 00 00 00 00 00 00 00  00 00 81 81 35 d3 00 00  ............5...
  80:  00 36 b2 83 6d 64 61 74  00 00 01 ba 21 00 01 00  .6..mdat....!...
  90:  05 80 2b 81 00 00 01 bb  00 0c 80 2f d9 04 e1 ff  ..+......../....
  a0:  c0 c0 20 e0 e0 2e 00 00  01 c0 07 ea ff ff ff ff  .. .............

文件开头的文件格式是什么(第一个0x80字节),以及如何解析它?

我在MooVTVOD上运行了谷歌搜索,它看起来像是与QuickTime和iTunes相关的东西。

我已经理解的是:

  • 根据mdatQuickTime .mov文件格式,当.mov包含MPEG时,在.mov前面有4个字节的大endian文件大小。
  • 就在mdat之后,就有MPEG-PS00 00 01 ba。不久之后,就会出现MPEG-PES00 00 01 c0,表示音频流。
  • 但是,这个文件中的第一个0x80字节似乎是一种不同的文件格式(不是QuickTime .mov,不是MPEG-PS,不是MPEG-PES),在这个问题中,我只对第一个0x80字节的文件格式感兴趣。
  • 像VLC这样的媒体播放器通常在文件开始时忽略垃圾,然后在偏移量0x80处开始播放MPEG-PS流。但是,我对它们忽略的0x80字节很感兴趣。
EN

Stack Overflow用户

回答已采纳

发布于 2020-03-07 22:45:40

问题中第一个0x80字节的文件格式是MacBinary II。

基于文件格式描述https://github.com/mietek/theunarchiver/wiki/MacBinarySpecs,它不是MacBinary I,因为MacBinary II有data[0x7a] == '\x81'data[0x7b] == '\x81' ( MacBinary i有data[0x7a] == '\x00',MacBinary III有data[0x7a] == '\x82');也不是MacBinary III,因为它有data[0x66 : 0x6a] == 'mBIN'

CRC值data[0x7c : 0x7e]是不正确的,因为文件名是在提交到StackOverflow之前修改的。所使用的CRC算法是CRC 16/XMODEM (on https://crccalc.com/),在MacBinary.c中也实现为CalcCRC。

data[0x41 : 0x45] == 'MooV'是文件类型代码。根据从TCDB下载的Excel电子表格,它意味着QuickTime电影(视频和可能是音频)。

data[0x45 : 0x49] == 'TVOD'是文件创建者代码。TCDB和这个数据库表明它意味着QuickTime播放器。

关于MacBinary:http://fileformats.archiveteam.org/wiki/MacBinary的更多信息和链接

请注意,所有这些头都不需要播放视频:通过删除第一个0x88字节,我们得到一个MPEG-PS视频文件,许多视频播放器都可以播放这个文件(不仅仅是QuickTime播放器,而且不仅仅是运行在macOS上的播放器)。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58458238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档