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端的解码相关推荐

  1. STM32+enc28j60+uip 实现 单片机 ping PC端

    STM32+enc28j60+uip 实现单片机 ping PC端 1. 前言 2. 实验简介 3. uip简介 4. icmp简介 4.1 icmp介绍 4.2 请求回显或回显应答报文格式介绍 5. ...

  2. 微信PC端技术研究(2)-拿下语音

    微信PC端技术研究-保存聊天语音 by anhkgg(公众号:汉客儿) 2019年1月31日 2.6.6.28 0x0. 前言 虽然一直知道CE,也用过一段时间,但一直用不好,可能太笨. 最近又学习了 ...

  3. 微信PC端技术研究(2)-保存聊天语音

    微信PC端技术研究-保存聊天语音 转载地址: [原创]微信PC端技术研究(2)-保存聊天语音-软件逆向-看雪论坛-安全社区|安全招聘|bbs.pediy.com 0x0. 前言 最近又学习了某位大佬用 ...

  4. STM32 USB音频麦克风实现

    STM32 USB音频麦克风实现 调试工具 资料书籍 音频描述符中的简称及分类 接口描述符 STM32配置 实现部分 如何使用 测试正弦音频 测试工程 USB缓冲区设置 H7的HAL库USB问题 参考 ...

  5. 音视频同步原理解析;音频编码和解码原理

    视频流中的DTS/PTS到底是什么? DTS(解码时间戳)和PTS(显示时间戳)分别是解码器进行解码和显示帧时相对于SCR(系统参考)的时间戳.SCR可以理解为解码器应该开始从磁盘读取数据时的时间. ...

  6. 14.------------------------------------------------------------------------------【PC端品优购项目】

    文章目录 [PC端品优购项目]前端小抄(14) 电商-主页 电商-分类列表页 电商-注册页 一.品优购项目规划 1.1 网站制作流程 1.2 品优购项目整体介绍 1.3 品优购项目的学习目的 1.4 ...

  7. aac蓝牙编解码协议_蓝牙音频编码哪个音质好?今天我们来逐一解读

    家有影院致力于帮助渴望学习.热爱电影.希望通过自己双手搭建出适合自己的家庭影院的朋友.如果你是这样的人,我们和500位同样热爱家庭影院的伙伴愿意一起帮助你实现梦想.同时,我们还能帮助你找到价格优惠的靠 ...

  8. uvc音频传输协议_蓝牙中的三种音频编码:Apt-X、SBC、AAC,请问分别有什么区别?...

    Apt-X在理论上声音保留的细节会更多,但需要购买对应的使用授权:SBC是A2DP蓝牙音频传输协议强制规定的编码格式,音质比MP3差:ACC是杜比实验室为音乐社区提供的技术,音质比SBC好.详细介绍如 ...

  9. 【Android RTMP】安卓直播推流总结 ( 直播服务器搭建 | NV21 图像采集 | H.264 视频编码 | PCM 音频采集 | AAC 音频编码 | RTMP 包封装推流 )

    文章目录 一. 安卓直播推流专栏博客总结 二. 相关资源介绍 三. GitHub 源码地址 四. 整体 Android 直播推流数据到服务器并观看直播演示过程 Android 直播推流流程 : 手机采 ...

最新文章

  1. redis五大数据类型使用场景
  2. 国家微生物科学数据中心推出免费一站式生物信息分析云平台
  3. python工厂模式 django_python设计模式-工厂方法模式
  4. 《Java并发编程的艺术》一一第2章Java并发机制的底层实现原理
  5. 前端框架 渐进式框架
  6. 阿里云数据传输服务低价不低质,服务再升级
  7. python决策树的应用_机器学习-决策树实战应用
  8. python-字符串数据类型-0222
  9. 马化腾“闪退”华人首富;马云回应收购中天微;华为遭美刑事调查 | CSDN极客头条...
  10. NYOJ 90整数划分
  11. Model-free强化学习
  12. 【安全牛学习笔记】离线密码破解
  13. 光纤传输相关问题及讨论
  14. 计算机中丢失d3dx9-41,雨林木风win10系统提示“计算机中丢失d3dx9-41.dll”的详细技巧...
  15. 1024,错过这一波福利,又要等一年了!
  16. 为什么计算机二级未来教育评分低,未来教育计算机Msoffice二级, PPT评分总是说文件不存在, 分数总是0分, 到底是为什么?...
  17. [python爬虫]喜马拉雅音乐
  18. 表单验证设计的用户体验基本原则
  19. 使用pyTorch搭建自己的facenet
  20. 护眼台灯显色指数是什么意思?led灯显色指数80够吗

热门文章

  1. 麒麟V10双网卡绑定测试
  2. 零基础无实物一步一步学PLCS7-1200仿真 背景知识一 低压元器件基础
  3. tableau自定义地图
  4. pythoncharm中文版_Pycharm2020中文版下载
  5. 【自考必看】《信息资源管理》信息化规划与组织,第2章
  6. 绿色抓屏截屏工具:FastStoneCapture
  7. NUS CS5477 assignment1
  8. 模拟CMOS集成电路设计入门学习(0)
  9. 为什么要选择网站优化
  10. LayaBox---TypeScript---类