社区
多媒体/流媒体开发
帖子详情
从mic录音程序如何做?
Anakin_Skywalker
2003-09-23 03:02:07
现在不想要完整的录音程序,只需要读取当前mic接收到的声音的波形数值就可以了,应该如何做?
...全文
56
8
打赏
收藏
从mic录音程序如何做?
现在不想要完整的录音程序,只需要读取当前mic接收到的声音的波形数值就可以了,应该如何做?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
EricTangHL
2003-10-11
打赏
举报
回复
mark
Anakin_Skywalker
2003-09-25
打赏
举报
回复
在vb6中能通过了,但是我不知道得到的数据格式是如何的
假如:
With dscbd.fxFormat
.nFormatTag = DxVBLibA.CONST_WAVEFORMATFLAGS.WAVE_FORMAT_1M08
.nChannels = 1
.lSamplesPerSec = 22050
.nBitsPerSample = 16
.nBlockAlign = .nBitsPerSample / 8 * .nChannels
.lAvgBytesPerSec = .lSamplesPerSec * .nBlockAlign
.nSize = 0 ' Ignored for WAVE_FORMAT_PCM.
End With
那么得到的dataBuf需要多长?几个databuf元素代表一个样点的绝对值?
sayo
2003-09-24
打赏
举报
回复
使用DirectSoundCapture
使用streaming buffer可减少buffer的使用量
Anakin_Skywalker
2003-09-24
打赏
举报
回复
对的!
现在就是说不需要一个大的buffer,而要一个能够时时更新的小buffer,最好只有一帧,不需要绘wave图,不需要存文件
需要能够在需要时立即更新该帧,速度要快,满足连续读取需要
另外,从buffer读出录音的声音强度是否是一个可正可负的浮点值?就是wave图上的点?
Anakin_Skywalker
2003-09-24
打赏
举报
回复
我用VB.NET是这样做的:
Dim dx As New DirectX8
Dim dsc As DirectSoundCapture8
Dim dscbd As DSCBUFFERDESC
Dim dscb As DirectSoundCaptureBuffer8
Dim dataBuf() As IntPtr
dsc = dx.DirectSoundCaptureCreate(vbNullString)
' Set up the wave format.
With dscbd.fxFormat
.nFormatTag = DxVBLibA.CONST_WAVEFORMATFLAGS.WAVE_FORMAT_1M08
.nChannels = 1 '通道数
.lSamplesPerSec = 22050 '采样率
.nBitsPerSample = 16 '16位
.nBlockAlign = .nBitsPerSample / 8 * .nChannels '字节数
.lAvgBytesPerSec = .lSamplesPerSec * .nBlockAlign '每秒字节数
.nSize = 0 ' Ignored for WAVE_FORMAT_PCM.
End With
dscbd.lFlags = DxVBLibA.CONST_DSCBCAPSFLAGS.DSCBCAPS_DEFAULT
dscbd.lBufferBytes = dscbd.fxFormat.lAvgBytesPerSec * 10 '一秒长
'dscbd.lBufferBytes = 4 '一字节长
dscb = dsc.CreateCaptureBuffer(dscbd)
dscb.Start(CONST_DSCBSTARTFLAGS.DSCBSTART_DEFAULT) '开始,不重绕
Dim dataBuf() As IntPtr
ReDim dataBuf(4 - 1)
dscb.ReadBuffer(0, 1, dataBuf(0), CONST_DSCBLOCKFLAGS.DSCBLOCK_DEFAULT)
'编译通过,运性时最后一句出错,说引用了错误指针。我想知道为什么
本来directX8中的dscb.ReadBuffer的第三各参数是一个int型的buffer数组,但在.NET中就变成了中间类型IntPtr,我怀疑是这里的问题,是不是在vb6中会好呢?
awapopeye
2003-09-24
打赏
举报
回复
8位PCM是这样的。但是其他采样率下的格式就不是了。
如果你的BUFFER就只有一帧的话肯定不行。建议建立2个小的BUFFER,每个可以在2到4帧之间。这样保险点。就算有延时也是MS级别,可以忽略。
awapopeye
2003-09-24
打赏
举报
回复
设备端录音是有BUFFER的,你的要求其实就是,在BUFFER被填充的同时,还要要求填充BUFFER的音频数据再次被读取?
对吗?
Anakin_Skywalker
2003-09-23
打赏
举报
回复
最好用.NET,不需要写文件,只要能够读取当前buffer的首个值就可以了
VS1003B-record.rar_
mic
程序
_vs1003b_
录音
VS1003B
录音
控制相关
程序
,使用
MIC
录音
STM32的
录音
机
程序
,亲测可用
STM32的
录音
机
程序
,亲测可用。内有详细的注释和文档。很好的学习资料。
一个
录音
程序
在android上的一个简单示例,可以录制从
mic
来的语音,保存成PCM格式。
可以快速简单测试耳机左右声道故障和麦克
录音
质量……
可以快速简单测试耳机左右声道故障和麦克
录音
质量,及麦克采集声音灵敏度等故障,一般应用于网吧,维修等耳麦测试量比较大的场合………… 被
程序
为易语言编写,可能会有某些杀毒软件因病毒库比较旧(或一些国外的...
java
录音
程序
纯java编写的 能实现从麦克风中读取声音流并保存为wav文件 简单易懂 强力推荐
多媒体/流媒体开发
2,543
社区成员
20,281
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章