pcm 降采样_视音频数据处理入门:PCM音频采样数据处理

本文分别介绍如下几个PCM音频采样数据处理函数:

分离PCM16LE双声道音频采样数据的左声道和右声道

将PCM16LE双声道音频采样数据中左声道的音量降一半

将PCM16LE双声道音频采样数据的声音速度提高一倍

将PCM16LE双声道音频采样数据转换为PCM8音频采样数据

从PCM16LE单声道音频采样数据中截取一部分数据

将PCM16LE双声道音频采样数据转换为WAVE格式音频数据

音频采样数据在视频播放器的解码流程中的位置如下图所示。

43fd50f0a8ba

函数列表

(1)分离PCM16LE双声道音频采样数据的左声道和右声道

本程序中的函数可以将PCM16LE双声道数据中左声道和右声道的数据分离成两个文件。函数的代码如下所示。

/**

* Split Left and Right channel of 16LE PCM file.

* @param url Location of PCM file.

*

*/

int simplest_pcm16le_split(char *url){

FILE *fp=fopen(url,"rb+");

FILE *fp1=fopen("output_l.pcm","wb+");

FILE *fp2=fopen("output_r.pcm","wb+");

unsigned char *sample=(unsigned char *)malloc(4);

while(!feof(fp)){

fread(sample,1,4,fp);

//L

fwrite(sample,1,2,fp1);

//R

fwrite(sample+2,1,2,fp2);

}

free(sample);

fclose(fp);

fclose(fp1);

fclose(fp2);

return 0;

}

从代码可以看出,PCM16LE双声道数据中左声道和右声道的采样值是间隔存储的。每个采样值占用2Byte空间。代码运行后,会把NocturneNo2inEflat_44.1k_s16le.pcm的PCM16LE格式的数据分离为两个单声道数据:

output_l.pcm:左声道数据。

output_r.pcm:右声道数据。

注:本文中声音样值的采样频率一律是44100Hz,采样格式一律为16LE。“16”代表采样位数是16bit。由于1Byte=8bit,所以一个声道的一个采样值占用2Byte。“LE”代表Little Endian,代表2 Byte采样值的存储方式为高位存在高地址中。

下图为输入的双声道PCM数据的波形图。上面的波形图是左声道的图形,下面的波形图是右声道的波形。图中的横坐标是时间,总长度为22秒;纵坐标是取样值,取值范围从-32768到32767。

43fd50f0a8ba

下图为分离后左声道数据output_l.pcm的音频波形图

43fd50f0a8ba

下图为分离后右声道数据output_r.pcm的音频波形图。

43fd50f0a8ba

(2)将PCM16LE双声道音频采样数据中左声道的音量降一半

本程序中的函数可以将PCM16LE双声道数据中左声道的音量降低一半。函数的代码如下所示。

/**

* Halve volume of Left channel of 16LE PCM file

* @param url Location of PCM file.

*/

int simplest_pcm16le_halfvolumeleft(char *url){

FILE *fp=fopen(url,"rb+");

FILE *fp1=fopen("output_halfleft.pcm","wb+");

int cnt=0;

unsigned char *sample=(unsigned char *)malloc(4);

while(!feof(fp)){

short *samplenum=NULL;

fread(sample,1,4,fp);

samplenum=(short *)sa

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值