STM32的音频编码与在PC端的解码
STM32的音频编码与在PC端的解码
- 简介
- STM32F4移植
- 编码
- PC移植
- 解码
- 结尾
简介
能看到这篇文章的基本上都是有迫切需求的人,话不多说,切入正题
编解码库:Speex
编码硬件平台:STM32F411——Cortex-M4
编码开发环境SDK:STM32CubeMX5.0.0 + Keil 5.26.2
解码平台:PC机
解码开发环境SDK:Visual Studio 2017(v141)——WSDK:10.0.17763.0
首先要说明一点,这个实例所使用的不是官网提供的源生Speex库,而是STM32官方提供的库,但是这个库是在2009年编写的,下载地址找不到了,但是有文档
ST官方文档:AN2812
我将此库下载地址放到CSDN上
https://download.csdn.net/download/weixin_41738734/10851597
STM32F4移植
文件不多,都在库里,自行查找
头文件位置
增加宏定义 HAVE_CONFIG_H
增大Heap_Size为0x8000
修改内存分配函数(os_support.h)
修改完毕后就可正常使用了。
编码
初始化:
SpeexBits bits;/* Holds bits so they can be read and written by the Speex routines */
void *enc_state, *dec_state;/* Holds the states of the encoder & the decoder */
int quality = 4, complexity=1, vbr=0, enh=1;/* SPEEX PARAMETERS, MUST REMAINED UNCHANGED */
int frame_size;
void Speex_Init(void)
{/* Speex encoding initializations */ speex_bits_init(&bits);enc_state = speex_encoder_init(&speex_nb_mode);speex_encoder_ctl(enc_state, SPEEX_SET_VBR, &vbr);speex_encoder_ctl(enc_state, SPEEX_SET_QUALITY,&quality);speex_encoder_ctl(enc_state, SPEEX_SET_COMPLEXITY, &complexity);speex_encoder_ctl(enc_state,SPEEX_GET_SAMPLING_RATE,&frame_size);/* speex decoding intilalization */dec_state = speex_decoder_init(&speex_nb_mode);speex_decoder_ctl(dec_state, SPEEX_SET_ENH, &enh);
}
编码方式1:
speex_bits_reset(&bits);
/* Encode the frame */
speex_encode_int(enc_state, (spx_int16_t*)&rdata[rdata_len], &bits);
/* Copy the bits to an array of char that can be decoded */
speex_bits_write(&bits, (char *)&recoder_outdata[recoder_out_data_loc], ENCODED_FRAME_SIZE);
编码方式2:
speex_bits_reset(&bits);
/* Encode the frame */
while(i--)speex_encode_int(enc_state, (spx_int16_t*)&rdata[rdata_len], &bits);
/* Copy the bits to an array of char that can be decoded */
speex_bits_write(&bits, (char *)&recoder_outdata[recoder_out_data_loc], ENCODED_FRAME_SIZE);
PC移植
主要是有关修改的地方
使用CTRL+H替换功能 将所有函数名前面的EXPORT删除
初始化代码相同不再多说
解码
/* Copy the encoded data into the bit-stream struct */
speex_bits_read_from(&bits, (char*)&fin_ptr[read_loc], 20);
/* Decode the data */
speex_decode_int(dec_state, &bits, (spx_int16_t *)out);
结尾
代码验证过。没有问题,并经过回环测试(STM32压缩并记录到SD卡上,在PC端进行还原),但是由于工作原因,不能放出STM32的代码。希望大家自己多试试。
STM32的音频编码与在PC端的解码相关推荐
- STM32+enc28j60+uip 实现 单片机 ping PC端
STM32+enc28j60+uip 实现单片机 ping PC端 1. 前言 2. 实验简介 3. uip简介 4. icmp简介 4.1 icmp介绍 4.2 请求回显或回显应答报文格式介绍 5. ...
- 微信PC端技术研究(2)-拿下语音
微信PC端技术研究-保存聊天语音 by anhkgg(公众号:汉客儿) 2019年1月31日 2.6.6.28 0x0. 前言 虽然一直知道CE,也用过一段时间,但一直用不好,可能太笨. 最近又学习了 ...
- 微信PC端技术研究(2)-保存聊天语音
微信PC端技术研究-保存聊天语音 转载地址: [原创]微信PC端技术研究(2)-保存聊天语音-软件逆向-看雪论坛-安全社区|安全招聘|bbs.pediy.com 0x0. 前言 最近又学习了某位大佬用 ...
- STM32 USB音频麦克风实现
STM32 USB音频麦克风实现 调试工具 资料书籍 音频描述符中的简称及分类 接口描述符 STM32配置 实现部分 如何使用 测试正弦音频 测试工程 USB缓冲区设置 H7的HAL库USB问题 参考 ...
- 音视频同步原理解析;音频编码和解码原理
视频流中的DTS/PTS到底是什么? DTS(解码时间戳)和PTS(显示时间戳)分别是解码器进行解码和显示帧时相对于SCR(系统参考)的时间戳.SCR可以理解为解码器应该开始从磁盘读取数据时的时间. ...
- 14.------------------------------------------------------------------------------【PC端品优购项目】
文章目录 [PC端品优购项目]前端小抄(14) 电商-主页 电商-分类列表页 电商-注册页 一.品优购项目规划 1.1 网站制作流程 1.2 品优购项目整体介绍 1.3 品优购项目的学习目的 1.4 ...
- aac蓝牙编解码协议_蓝牙音频编码哪个音质好?今天我们来逐一解读
家有影院致力于帮助渴望学习.热爱电影.希望通过自己双手搭建出适合自己的家庭影院的朋友.如果你是这样的人,我们和500位同样热爱家庭影院的伙伴愿意一起帮助你实现梦想.同时,我们还能帮助你找到价格优惠的靠 ...
- uvc音频传输协议_蓝牙中的三种音频编码:Apt-X、SBC、AAC,请问分别有什么区别?...
Apt-X在理论上声音保留的细节会更多,但需要购买对应的使用授权:SBC是A2DP蓝牙音频传输协议强制规定的编码格式,音质比MP3差:ACC是杜比实验室为音乐社区提供的技术,音质比SBC好.详细介绍如 ...
- 【Android RTMP】安卓直播推流总结 ( 直播服务器搭建 | NV21 图像采集 | H.264 视频编码 | PCM 音频采集 | AAC 音频编码 | RTMP 包封装推流 )
文章目录 一. 安卓直播推流专栏博客总结 二. 相关资源介绍 三. GitHub 源码地址 四. 整体 Android 直播推流数据到服务器并观看直播演示过程 Android 直播推流流程 : 手机采 ...
最新文章
- redis五大数据类型使用场景
- 国家微生物科学数据中心推出免费一站式生物信息分析云平台
- python工厂模式 django_python设计模式-工厂方法模式
- 《Java并发编程的艺术》一一第2章Java并发机制的底层实现原理
- 前端框架 渐进式框架
- 阿里云数据传输服务低价不低质,服务再升级
- python决策树的应用_机器学习-决策树实战应用
- python-字符串数据类型-0222
- 马化腾“闪退”华人首富;马云回应收购中天微;华为遭美刑事调查 | CSDN极客头条...
- NYOJ 90整数划分
- Model-free强化学习
- 【安全牛学习笔记】离线密码破解
- 光纤传输相关问题及讨论
- 计算机中丢失d3dx9-41,雨林木风win10系统提示“计算机中丢失d3dx9-41.dll”的详细技巧...
- 1024,错过这一波福利,又要等一年了!
- 为什么计算机二级未来教育评分低,未来教育计算机Msoffice二级, PPT评分总是说文件不存在, 分数总是0分, 到底是为什么?...
- [python爬虫]喜马拉雅音乐
- 表单验证设计的用户体验基本原则
- 使用pyTorch搭建自己的facenet
- 护眼台灯显色指数是什么意思?led灯显色指数80够吗