iOS音频开发之`AudioStreamBasicDescription`_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > iOS音频开发之`AudioStreamBasicDescription`

iOS音频开发之`AudioStreamBasicDescription`

 2016/9/22 5:32:18  huahuahu  程序员俱乐部  我要评论(0)
  • 摘要:这个类提供了对于音频文件的描述Anaudiostreamisacontinuousseriesofdatathatrepresentsasound,suchasasong.Achannelisadiscretetrackofmonophonicaudio.Amonophonicstreamhasonechannel;astereostreamhastwochannels
  • 标签:iOS BASIC 开发

这个类提供了对于音频文件的描述

  • An audio stream is a continuous series of data that represents a sound, such as a song.

  • A channel is a discrete track of monophonic audio. A monophonic stream has one channel; a stereo stream has two channels.

  • A sample is single numerical value for a single audio channel in an audio stream.

  • A frame is a collection of time-coincident samples. For instance, a linear PCM stereo sound file has two samples per frame, one for the left channel and one for the right channel.

  • A packet is a collection of one or more contiguous frames. A packet defines the smallest meaningful set of frames for a given audio data format, and is the smallest data unit for which time can be measured. In linear PCM audio, a packet holds a single frame. In compressed formats, it typically holds more; in some formats, the number of frames per packet varies.

  • The sample rate for a stream is the number of frames per second of uncompressed (or, for compressed formats, the equivalent in decompressed) audio.

首先,音频文件的产生是模拟信号->PCM以后的数字信号->压缩、编码以后的音频文件。
PCM时采样频率叫做sample rate。
每一次采样可以得到若干采样数据,对应多个channel。
每一个采样点得到的若干采样数据组合起来,叫做一个frame。
若干frame组合起来叫做一个packet。
mSampleRate,就是采用频率
mBitsPerChannel,就是每个采样数据的位数
mChannelsPerFrame,可以理解为声道数,也就是一个采样时刻产生几个采样数据。
mFramesPerPacket,就是每个packet的中frame的个数,等于这个packet中经历了几次采样间隔。
mBytesPerPacket,每个packet中数据的字节数。
mBytesPerFrame,每个frame中数据的字节数

计算公式

  1. 计算每个packet的持续时间

    duration = (1 / mSampleRate) * mFramesPerPacket
    
  2. 计算mBitsPerChannel
    对于kAudioFormatFlagsCanonical的PCM数据,有以下公式。大概每个采样数据的字节数用AudioSampleType描述。

    mBitsPerChannel = 8 * sizeof (AudioSampleType);
    
  3. 计算mBytesPerFrame

    mBytesPerFrame = n * sizeof (AudioSampleType);
    

    其中n是声道数目

发表评论
用户名: 匿名