搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
我家小花儿
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
2024年前端最新vue3实现图片上传转base64格式_vue3 图片转base64(1),2024年最新面试建议着正装_base64 图片上传
2
STM32高级定时器实现:两路互补PWM输出,精准死区时间控制_stm32互补pwm
3
Git 本地仓库关联远程仓库_git本地仓库关联远程仓库
4
汉诺塔问题,python语言实现_python编写汉诺塔
5
二分查找知识点及练习题_请在一个有序递增数组中(不存在相同元素),找出值 x 的位置,如果 x 在数组中不存在
6
python----Vue框架学习_初识vue组件 python
7
金融同业业务
8
工地云SaaS系统,通过物联网与可视化等先进技术的综合应用,搭建的智慧工地管理云平台源码
9
【合作】云计算基础架构【图】_云计算云存储示意图
10
六自由度机器人逆向运动学_机械手可以利用其自由度,完成人类手做不到的事情了...
当前位置:
article
> 正文
实现音频pcm数据播放(window平台)_pcm播放器 windows
作者:我家小花儿 | 2024-08-18 00:33:39
赞
踩
pcm播放器 windows
流程概述:初始化音频输出设备->往设备输入音频数据->关闭音频输出设备。
流程解析:在播放流程中,音频输出设备只需要初始化一次,主要是配置音频参数,比如采样率、位宽、通道数、音频数据类型等;接着连续往此设备输入正确的音频数据,需要注意每次输入的数据长度是否有限制;播放完成后关闭音频输出设备,结束单次的音频播放。
流程实现:window平台直接使用Winmm.dll库,库中提供现成的音频设备操作api,比如:
waveOutOpen
、
waveOutClose
等。本次使用中主要用到以下几个:
waveOutGetNumDevs
、waveOutOpen
、
waveOutReset
、
waveOutClose
、
waveOutPrepareHeader
、
waveOutUnprepareHeader
、
waveOutWrite。
waveOutGetNumDevs
:
获取播放设备个数,如果返回值为0,说明没有可用于播放输出的设备,接下来没必要执行其它与输出设备相关的操作了。
waveOutOpen
:初始化音频输出设备,包括设置
采样率、位宽、通道数
等参数,如果open成功,则可以获得输出设备对应的操作句柄,用于后续对此设备进行别的操作。
waveOutReset
:重置播放队列,将播放缓存清空,为接下来执行close做准备。
waveOutClose
:关闭音频输出设备,释放设备的控制权。
waveOutPrepareHeader
:将此段音频数据置为可播放状态,为接下来执行write做准备。
waveOutUnprepareHeader
:
将此段音频数据置为不可播放状态。
waveOutWrite
:将音频数据放入播放队列中。
1、(初始化设备)
waveOutGetNumDevs
->
waveOutOpen
->
2、
(输入数据)
waveOutPrepareHeader->
waveOutWrite
->
(重复此环节)
3、
(关闭设备)
waveOutUnprepareHeader
->
waveOutReset
->
waveOutClose
注意事项与建议:
1、
上述提到的api都自带互斥锁,必须防备死锁的出现,否则会导致播放阻塞。
2、
放入播放队列中的缓存不能立即取走或做其它用途,因为播放需要时间,只有在回调中抛出的缓存才是播放完成的。所以必须要有一个合适大小的缓存队列,以保证数据缓存与播放缓存两不误。
3、
执行
waveOutOpen
时建议注册回调函数,回调可以接收到相应的播放消息,比如每次(帧)数据播放完都会有
WOM_DONE消息,此时根据需要是否对已经使用完的资源回收。
4、
音频播放速度是固定的(音频参数不变的情况下),为了减少出现因数据不及时(特别是实时的音频数据)出现的播放卡顿现象,建议增加音频数据缓存,比如一次性缓存到32k才放入播放队列等。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/我家小花儿/article/detail/995055
推荐阅读
article
python
基于
文件
操作,2024年最新
vue
项目实战案例_
python
gui
windows
vu...
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术...
赞
踩
article
10
分钟
安装
好
torch
的GPU
版本
(
Windows
)_
torch
gpu
版本
...
(我测试了几个
版本
,发现只要保证cu118, cp38就可以。至于中间的
torch
版本
,
torch
vision
版本
。什么...
赞
踩
article
在
Windows
上
安装
Rabbit
MQ
指南...
rabbit
MQ
是一个在A
MQ
P协议标准基础上完整的,可服用的企业消息系统。他遵循Mozilla Public Lice...
赞
踩
article
RabbitMQ
3.8
.2版本
window
安装
教程...
本文详细介绍了如何在Windows上
安装
RabbitMQ
3.8
.2版本。首先,需要下载并
安装
Erlang,它是Rabb...
赞
踩
article
【
RabbitMQ
】Windows安装
RabbitMQ
_
rabbitmq
安装
csdn
windo...
本文详细描述了在Windows系统上安装Erlang并配置其环境变量,以及安装和配置
RabbitMQ
服务,包括关闭服务、...
赞
踩
article
windows
下安装
rabbitmq
_
windows
安装
rabbitmq
...
Rabbitmq是实现了高级消息队列协议(AMQP)的开源消息代理软件,用Erlang语言编写的,基于此安装rabbit...
赞
踩
article
windows
编译
librdkafka
_在
win11
上
编译
x64
版
的
librdkafka
-
1.8
....
GitHub上
的
源码是32位
的
解决方案,下面写
的
是64位
的
解决方案,即使是32位
的
按这个流程
编译
也可以,只是对应
的
软件安...
赞
踩
article
kafka
(librd
kafka
)
windows
c++
编程
_lib
kafka
windows
编...
前言:网上看到很多关于
kafka
在
windows
下的编译及使用cmd运行例子,也有c++在集群上和
windows
的kaf...
赞
踩
article
用
VS2019
编译
librdkafka
库
_
librdkafka
windows
需要哪些依赖
库
...
Librdkafka依赖于zlib、Zstd和OpenSSL
库
,
编译
之前要先
编译
这三个
库
,本文只
编译
32位版本,64位编...
赞
踩
article
windows
驱动
开发
-
DMA
技术(二)
_
windows
dma
...
使用基于数据包的系统
DMA
_
windows
dma
windows
dma
前面描述了DM...
赞
踩
article
Windows
11 安装
Docker
_
win11
家庭版 安装
docker
...
本文指导如何在
Windows
11专业版上安装
Docker
,包括检查系统版本、启用Hyper-V功能,以及按照官方文档安...
赞
踩
article
Windows
(Win11)
安装
Docker
(
Docker
Desktop
)_
win11
安装
d...
一般
docker
都是直接
安装
在 Linux 服务器上,用来快速部署一些中间件(比如 redis,rocketmq等等...
赞
踩
article
Windows
11 安装
Docker
_
window11
安装
docker
...
1、确认windows 11的版本为专业版本。3、安装
docker
for windows。2)选择启动或关闭Windo...
赞
踩
article
Windows
11
安装
Docker
Desktop
_
windows
11 家庭中文版如何
安装
d...
本文介绍了如何在
Windows
系统中
安装
和配置WSL2,以及启用虚拟机平台。接着,详细阐述了从MicrosoftStor...
赞
踩
article
windows
11 安装
minikube
_
win11
安装
minikube
...
windows
11 安装
minikube
_
win11
安装
minikube
win11
安装
minikube
...
赞
踩
article
[
免费
]
适用
于
Windows
10
的十大
数据恢复
软件
...
Windows
10
是 Microsoft 开发的跨平台和设备应用程序操作系统。它启动速度更快,具有熟悉且扩展的“开始...
赞
踩
article
windows
mysql
增量
备份
_
windows
服务器
mysql
增量
备份
批处理(
数据库
)...
方法一利用
mysql
dump代码如下@echo offset PATH=C:/"Program Files"/WINRA...
赞
踩
article
windows
mysql
增量
备份
_
windows
下
mysql
增量
备份
与全
备份
批处理
...
win下的全备
批处理
批处理
用于游戏服务器,经过严格测试,且正式使用,主要用来完全
备份
数据库,当然.这只是将数
备份
出来,至...
赞
踩
article
Windows
MySql
增量
备份
、完整
备份
采坑之路...
1.前言这周公司交给我一个任务,负责项目Mysql数据库的
备份
,因为项目上线后数据是一个大问题,出了什么问题数据才是最大...
赞
踩
article
Windows 系统从零配置
Python
环境,安装
CUDA
、
CUDNN
、
PyTorch
详细教程...
本文详细介绍了如何配置
Python
环境,包括安装Anaconda,创建虚拟环境,以及检查安装成功。接着,它指导读者安装C...
赞
踩
相关标签
python
vue.js
开发语言
windows
torch
操作系统
大数据
运维
rabbitmq
分布式
ruby
perl
unix
驱动开发
docker
容器
eureka
java