iOS 视频的处理

关于CAF文件

2017-06-29  本文已影响342人  ibingewin

写在前面

在查看苹果音频相关文档时,涉及到CAF文件,不太了解,就参考了一下苹果的官方说明文档 Apple Core Audio Format Specification 1.0

CAF File Overview (文件概览)

该文档提供了理解和使用苹果的Core Audio Format(CAF)文件所需要的背景知识

CAF文件的优点

苹果的 Core Audio Format (CAF)文件是存储、操作数字音频的一种灵活,艺术级的文件格式。在OS X v10.4OS X v10.3QuickTime 7iOS5.0之后开始支持,CAF文件具有 高性能、高灵活性,可扩展的特点。

CAF File Structure (文件结构)

CAF文件由文件头语句块组成。文件头标识了文件的类型和CAF的版本;语句块块头块数据组成:块头定义了语句块的类型和块数据的大小。每个语句块的类型都可以有自己的格式和属性。

每个CAF文件都必须要有两个语句块:Audio Data chunk(音频数据块,包含音频数据)Audio Description chunk(音频描述块,包含音频数据格式)

音频描述块必须是文件头后的第一个语句块音频数据块可以在文件的任何其他位置,前提是数据区已确定。如果音频数据块的数据区未确定,块头的size设置为-1,该块必须在文件的最后位置,这样可以让你在块头size不可用的时候,也能决定数据区的大小

真正的音频是存储在音频数据块中,有一系列的音频包组成。音频包可以包含多种格式。
CAF文件还支持其他类型的语句块,这些语句块可以放在第一个块(音频描述块)和最后一个块(块头size为-1的坏块)之间的任何位置

Chunk Struncture(语句块结构)

每个语句块都由一个块头和一个数据区组成

块头包含两部分:

Packets,Frames,and Samples(包、帧、样本)

为了理解这些参数,需要理解下边4个概念

Types of Chunks(语句块类型)

Data Types(数据类型)

CAF文件中的所有fields,都是大端字节排序,音频数据可以是大端模式,也可以是小端模式,取决于数据格式。音频数据格式由音频描述块决定。

CAF File Header and Chunk Headers(CAF文件头和语句块头)

文件头,描述整个CAF文件;语句块头,描述对应的语句块

CAF File Header(CAF文件头)

每个CAF文件都有一个简单的头,即 CAFFileHeader 结构体

struct CAFFileHeader {
    UInt32  mFileType;
    UInt16  mFileVersion;
    UInt16  mFileFlags;
};
CAF Chunk Header(CAF语句块头)

每一个语句块都有一个块头,即 CAFChunkHeader结构体

struct CAFChunkHeader {
    UInt32  mChunkType;
    SInt64  mChunkSize;
};

了解更多关于CAF Chunk types

Required(必须的语句块)

每一个CAF文件都必须包含下列语句块

上一篇下一篇

猜你喜欢

热点阅读