【C语言】PCM音频数据处理---左右声道分离
来源:互联网 发布:网络机柜的流程 编辑:程序博客网 时间:2024/05/22 07:07
我用一麦克风录制的PCM数据是16bit,双声道的,用Audacity工具查看可知,右声道是没有声音的,左声道才有声音,如下图所示
所以为了节省存储空间,完全可以将左右声道分离出来,左右声道分离的方法很简单,只要知道PCM数据是如何存储的,就可以了,具体存储格式如下
根据上图可以得出,如果我们想要分离左右声道,只要将对应声道的数据保存起来即可,由于我录制的PCM是裸数据,所以直接用文件读写操作去处理。具体实现如下
C语言实现
#define FALSE 0#define TRUE 1#define OLD_FILE_PATH "old.pcm"#define LEFT_FILE_PATH "left.pcm"#define RIGHT_FILE_PATH "right.pcm"void pcm_lr_separate(void){ char buf[16] = {0}; static int leftFlag = FALSE; int size = 0; FILE *fp = fopen(OLD_FILE_PATH, "rb+"); FILE *fp_l = fopen(LEFT_FILE_PATH, "wb+"); FILE *fp_r = fopen(RIGHT_FILE_PATH, "wb+"); while(!feof(fp)) { size = fread(buf, 1, 2, fp); // 此处是读取16bit(一个声道),一个字节8位,所以count为2 if( (size>0) && (leftFlag == FALSE) ) { leftFlag = TRUE; fwrite(buf, 1, size, fp_l); } else if( (size>0) && (leftFlag == TRUE) ) { leftFlag = FALSE; fwrite(buf, 1, size, fp_r); } } fclose(fp); fclose(fp_l); fclose(fp_r);}
经过处理后,提取左声道的PCM波形如下图所示
关于PCM数据格式的资料,可以参考下面的资料
参考资料
1.PCM数据格式
2.PCM数据格式
3.音频编解码·格式篇(1)Wave PCM audio format(WAV)
0 0
- 【C语言】PCM音频数据处理---左右声道分离
- 使用C语言实现pcm格式音频的声道分离
- 【C语言】PCM音频数据处理---降低采样率
- 【C语言】PCM音频数据处理---音量增大或减小
- PCM音频采样数据处理
- PCM音频采样数据处理
- MCI接口实现音频左右声道控制
- android 使用libmad 生成MP3左右声道的PCM文件
- 视音频数据处理入门:PCM音频采样数据处理
- 视音频数据处理入门:PCM音频采样数据处理
- 视音频数据处理入门:PCM音频采样数据处理
- 使用C语言实现pcm格式音频音量的调整
- 音乐播放例子 ios 可显示左右声道的音频
- Android输出正弦波音频信号(左右声道对称)
- PCM1------PCM音频采样数据处理函数
- PCM2------PCM音频采样数据处理函数
- 控制左右声道
- kmplayer 调左右声道
- 面向过程和面向对象及面向对象的三大特征
- Windows下Python环境搭建,IDE:Eclipse+Pydev+Flask
- CodeForces 397C On Number of Decompositions into Multipliers(组合数学)
- HTTP状态码详解
- IOS开发中的几种设计模式介绍
- 【C语言】PCM音频数据处理---左右声道分离
- JAVA中的反射机制
- (3) Python 内置类型 –- 元组
- NSDate日期时间类
- Object-C self = [super init]
- 修改Chrome的User Agent
- NSNumber
- linux下VFS
- jude 使用学习