(注:只改变量化位数,并不改变采样率和声道数等信息) 

弄了一个下午加一个早上,终于算是弄完了,效果非常不错,音质无损失,之前一直用ffmpeg做重采样处理,但是一直是各种艰辛,各种奔溃,很无语,最后想了一下,从源头开始,自己想办法吧数据转换一下,搜了一下雷神的,他写了PCM从16位转到8位的,没有32位到16位的,所以只能自己摸索了,总结一下,核心代码:


注释的地方是探索的过程,实际不需要
 
int pcm32_to_pcm16(const char *filename)
{  
FILE *fp =  fopen(filename, "rb");
FILE *fp1 = fopen("output_16.pcm", "wb");
unsigned char *sample = (unsigned char*)calloc(1, 4+1);
while(!feof(fp))
{
fread(sample, 4, 1, fp);
sample[4] = '\0';
float *sample32 = (float*)sample;
short sample16 = (short)floor( (*sample32) * 32767 );
fwrite(&sample16, 2, 1, fp1);
//               short sample16 = (short)((*sample32) >> 16);
//               fwrite(&sample16, 2, 1, fp1);
 
// int nVar32 = *sample32;
// short nLow = LOWORD(nVar32);
// short nHigh = HIWORD(nVar32);
// fwrite(&nLow,  2, 1, fp1);
// fwrite(&nHigh, 2, 1, fp2);
}
free(sample);
fclose(fp);
fclose(fp1);
return 0;  
}

将32位浮点音频转换为16位相关推荐

  1. 24位真彩色图像转换为16位高彩色图像的实现方法及效果改进

    本篇博文来自博主Imageshop,打赏或想要查阅更多内容可以移步至Imageshop. 转载自:https://www.cnblogs.com/Imageshop/p/3453569.html   ...

  2. 计算机引入浮点的优点,新人课堂:什么是32位浮点音频?优势是什么?32Bit时代来了...

    Zaxcom Nova录音机 32位浮点音频的引入是改变游戏规则的.然而,这个新的和看似创新的功能,虽然被人称之为"革命之路",实际上为您的录音提供了什么?它是否适合您? 无论您是 ...

  3. 16位转10位c语言,10进制数转换为16位二进制数

    写在前面: 题解是对具体题目的编程实现,不会具体讲解C语言语法.请先大致学习好语法,自己敲敲代码后再看题解(上来就直接看题解的习惯不好哟~).在每一题的题解之前,会列出本题涉及到的语法知识供参考,可以 ...

  4. C#中Guid.ToString (String)五种格式,以及将32位的GUID转为16位及其他格式

    注意:本内容来自:C#中Guid.ToString Method (String)五种格式,以及将将32位的GUID转为16位及其他格式 一.生成各种格式的32位GUID  System.Guid.N ...

  5. 创世贴|怎么在64或32位系统中运行16位程序《大富翁》

    创世贴|怎么在64或32位系统中运行16位程序<大富翁> 绪言 大家好!纵观游戏行业的发展,可谓是进步迅猛.百花齐放.游戏是每个人在学习.工作之余休闲娱乐的良药.玩游戏的人从皇宫贵族到社会 ...

  6. 24位深的bmp图片转换为16位深RGB565格式的bmp图片源码

    /**24位深的bmp图片转换为16位深RGB565格式的bmp图片**/ #include <iostream> #include <stdio.h> #include &l ...

  7. python十进制单精度浮点(float)转16位16进制(FP16 hex)

    python十进制单精度浮点(float)转16位16进制(FP16 hex) 目的 将神经网络权重存放到FPGA内部需要将可训练参数从float转换到FP16 hex. Code # tt.py i ...

  8. 用Java将32 bpp映像转换为16 bpp映像

    如何使用Java库将32 bpp映像(ARGB)转换为16 bpp映像(ARGB)?出于我的好奇心,在像素级,这种转换是做什么的?如果我有一个int值,它保存了像素的值(所有通道),那么在转换发生之后 ...

  9. 8位字节数转16位字节数_位与字节比较

    8位字节数转16位字节数 Bit is the most basic storage unit of the computer systems where Byte is a basic storag ...

最新文章

  1. Python 将数据框类型转为字典类型
  2. 【CV】10种轻量级人脸检测算法大PK | 代码集合开源
  3. 【学习笔记】ODATA
  4. JRebel : java.lang.OutOfMemoryError: PermGen space 异常
  5. windows系统修改cmd窗口编码格式
  6. java nosql_使用NoSQL实现实体服务–第4部分:Java EE
  7. 利用JTDS连接数据库并操作示例
  8. IDEA 运行maven命令时报错: -Dmaven.multiModuleProjectDirectory system propery is not set
  9. uniapp ---- 树组件
  10. 模式识别中常见概率符号公式的学习笔记 By Youki~
  11. 精通Android开发 0
  12. cocostudio基础 教程
  13. Axure模板库(1)-常见网站
  14. 马知恩周义仓编常微分方程定性与稳定性方法部分习题参考解答
  15. 联创机房管理系统服务器密码,高校机房管理系统解决方案.doc
  16. SIM868_GNSS结果解析
  17. redis设置用户名和密码
  18. hibernatexml方式和注解方式实现单实体映射和继承关系映射,eclipse实现
  19. vue中使用rrweb实现页面回放功能
  20. Unity小地图的放大缩小

热门文章

  1. 初识 Vertica ,看完白皮书,我都发现了啥【文末赠书】
  2. 今日金融词汇---借壳上市,是什么?
  3. LeetCode-344
  4. 解决 mysql 自动增长的 id 不是从 1 开始 或 不连续
  5. 微信分享自定义多次分享设置
  6. 东北石油大学计算机考研分数线,2020东北石油大学考研分数线已公布
  7. 机械和计算机分数线,东北大学通信,冶金,计算机,材料,机械历年分数线
  8. PodfileKit将github上常见的iOS(Swift)第三方框架进行了汇总,并且将框架进行了分类,为用户管理第三方框架提供了方便。
  9. 计算机网络在广播电视工程中的应用,关于计算机在广播电视工程中的应用要点...
  10. 线上问题:stream获取值抛出空指针及源码分析