社区
游戏开发
帖子详情
诸位专家,vc++中如何使用waveoutWrite()播放多个声音数据块?
soshine
2000-01-26 09:15:00
加精
诸位专家,vc++中如何使用waveoutWrite()播放多个声音数据块?
...全文
528
1
打赏
收藏
诸位专家,vc++中如何使用waveoutWrite()播放多个声音数据块?
诸位专家,vc++中如何使用waveoutWrite()播放多个声音数据块?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Un1
2000-01-27
打赏
举报
回复
1. l = waveOutOpen(hWaveOut, WAVE_MAPPER, mWaveOutFmt, 0, 0, CALLBACK_NULL)
2. l = waveOutPrepareHeader(hWaveOut, mWaveOutHDR, Len(mWaveOutHDR)) ' Validate Return Code
3. l = waveOutWrite(hWaveOut, WaveOutHDR, Len(WaveOutHDR))
4.当WaveOutHDR.dwFlag的完成标志被复位时重复3。
5. l = waveOutReset(hWaveOut)
l = waveOutUnprepareHeader(hWaveOut, mWaveOutHDR1, Len(mWaveOutHDR1))
l = waveOutClose(hWaveOut)
c++
下利用
wav
eOut
Write
(directsound)编写的双缓冲区音频
播放
程序
c++
下利用
wav
eOut
Write
(directsound)编写的双缓冲区音频
播放
程序 ,语音流畅,可以修改为网络音频
数据
的
播放
。(音频
数据
利用soket接收即可)
播放
PCM音频
数据
的双缓冲用法
播放
PCM音频
数据
的双缓冲用法
V
c++
音视频聊天程序
相关函数/类: CWnd CDialog CDataExchange GetDlgItemText SetParent SetDlgItemText Escape CSocket CString PostThreadMessage mixerOpen mixerGetLineInfo mixerClose mixerGetLineControls mixerSetControlDetails mixerGetControlDetails PlaySound CWinThread CFile
wav
eOutOpen GetCurrentThreadId
wav
eOutSetVolume
wav
eOutGetErrorText
wav
eOutReset Sleep
wav
eOutClose
wav
eOutUnprepareHeader
wav
eOutPrepareHeader
wav
eOut
Write
PostQuitMessage
wav
eInOpen
wav
eInPrepareHeader
wav
eInAddBuffer
wav
eInStart
wav
eInGetErrorText
wav
eInStop
wav
eInReset
wav
eInClose
wav
eInUnprepareHeader ZeroMemory CWinApp LoadIcon GetSystemMenu CMenu LoadString AppendMenu GetMenu EnableMenuItem GetDlgItem CListBox CButton EnableWindow CreateThread CRect GetWindowRect ScreenToClient SetWindowPos GetDC IsIconic CPaintDC SendMessage GetSystemMetrics GetClientRect DrawIcon MessageBox SuspendThread ResumeThread CSliderCtrl CScrollBar
用系统api
播放
波形文件(
wav
)例子
用以下函数实现
wav
文件的
播放
操作 常用mmio函数: mmioOpen( ) 打开一个RIFF文件 mmioDescend ( ) 进入
块
mmioRead( ); 该取RIFF文件 mmioAscend ( ); 跳出
块
mmioClose( ); 关闭PIFF文件 对于
块
来说,进入
块
和跳出
块
是配对的。 读取
WAV
文件的读取过程: mmioOpen( ) 打开文件 ↓ mmioDescend ("
WAV
E") 进入"fmt"
块
↓ mmioRead( ) 读取
WAV
E文件格式信息 ↓ mmioAscend ( ) 跳出"fmt"
块
↓ mmioDescend ("data") 进入"data"
块
↓ mmioRead( ) 读取
WAV
E
数据
信息 ↓ mmioClose( ) 关闭文件。 输出
WAV
文件的过程:
Wav
eOutOpen () 打开一个输出设备 ↓
Wav
eOutPrepareHeader() 准备
WAV
E
数据
头。 ↓
Wav
eOut
Write
() 将
数据
写入设备并开始
播放
↓
Wav
eOutReset() 停止
播放
并重置管理器 ↓
Wav
eOutClose() 并闭
播放
设备 ↓
Wav
eOutUnpareHeader() 清理用
Wav
eOutPrepareHeader准备的
Wav
e
WinCE5.0
播放
mp3音乐的方法
利用
wav
eOutOpen,
wav
eOut
Write
,
wav
eOutPrepareHeader,
wav
eOutUnprepareHeader,
wav
eOutClose等函数制作的一个利用多线程同时进行解码
播放
的程序,解码线程和
播放
线程共享一个pcm
块
队列。只有如此,才能流畅的在ppc 上
播放
mp3音乐,如果是按照传统流程,解码一帧、
播放
一帧的话,就200mhz的处理器来说根本不行, CPU占用率大于70%,而且
声音
也是会一跳一跳的。这是在下的一点心血,发上来与大家分享。测试通过。
游戏开发
8,303
社区成员
23,682
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章