AudioFrame
原始音频数据。
C#
public class AudioFrame
{
public AudioFrame()
{
type = AUDIO_FRAME_TYPE.FRAME_TYPE_PCM16;
samplesPerChannel = 0;
bytesPerSample = BYTES_PER_SAMPLE.TWO_BYTES_PER_SAMPLE;
channels = 0;
samplesPerSec = 0;
RawBuffer = new byte[0];
renderTimeMs = 0;
avsync_type = 0;
}
public AudioFrame(AUDIO_FRAME_TYPE type, int samplesPerChannel, BYTES_PER_SAMPLE bytesPerSample, int channels, int samplesPerSec,
byte[] buffer, long renderTimeMs, int avsync_type)
{
this.type = type;
this.samplesPerChannel = samplesPerChannel;
this.bytesPerSample = bytesPerSample;
this.channels = channels;
this.samplesPerSec = samplesPerSec;
this.RawBuffer = buffer;
this.renderTimeMs = renderTimeMs;
this.avsync_type = avsync_type;
}
public AUDIO_FRAME_TYPE type { set; get; }
public int samplesPerChannel { set; get; }
public BYTES_PER_SAMPLE bytesPerSample { set; get; }
public int channels { set; get; }
public int samplesPerSec { set; get; }
public byte[] RawBuffer { set; get; }
public long renderTimeMs { set; get; }
public int avsync_type { set; get; }
}
type
音频帧类型,详见 AUDIO_FRAME_TYPE。
samplesPerChannel
每个声道的采样点数。
bytesPerSample
每个采样点的字节数。对于 PCM 来说,一般使用 16 bit,即两个字节。
channels
声道数量(如果是立体声,数据是交叉的)。
- 1: 单声道
- 2: 双声道
samplesPerSec
每声道每秒的采样点数。
RawBuffer
声音数据缓存区(如果是立体声,数据是交叉存储的)。
缓存区数据大小 buffer
= samples
× channels
× bytesPerSample
。
renderTimeMs
外部音频帧的渲染时间戳。
你可以使用该时间戳还原音频帧顺序;在有视频的场景中(包含使用外部视频源的场景),该参数可以用于实现音视频同步。
avsync_type
保留参数。