如何解析MP3数据以提取编号的帧?

时间:2011-01-04 23:52:02

标签: linux parsing mp3 frame

我正在为MP3(CBR)编写流媒体应用程序。它是所有passthru,意味着我不需要解码/编码,我只需要传递数据,因为我看到它来了。我希望能够将MP3帧计算为passthru(以及其他一些内容,如吞吐量计算)。

根据MP3 frame header规范,同步字似乎是1的11(11)位,然而然而我(自然地)注意到我应该安全地假设的帧有效载荷是二元的,因此按顺序看十一(11)个1并不奇怪。

我的问题:

  1. 是否有可以从MP3文件/管道中提取编号帧的Unix | Linux | Perl MP3解析器实用程序(dd - 样式)?
  2. 如何从任何其他二进制有效负载数据中描绘MP3标头块?最后:
  3. 是由有效负载字节定义的常量比特率(CBR)MP3,还是每个给定时间片的聚合字节数/比特数中包含的头字节数?
  4. 谢谢,

1 个答案:

答案 0 :(得分:4)

我会去#2。

我的理解是,同步到MP3流的常用方法(从而允许您对帧进行计数)就是这样做:

  • 搜索同步字
  • 找到同步字时,验证标题的其余部分
  • 如果帧标头有效,那么您应该知道下一个标题的位置
  • 如果您连续打了3个或4个标题,并且它们有效,那么您找到它们的可能性非常高。

我最近看到一个关于此的文档的页面,但目前我找不到它。如果我再次找到它,我会发布它。