本人最近撰寫一個用PowerBuilder9.0實作語音實時監聽的程式(服務器向外撥打電話,客戶如果留言,在客戶端可以監聽)。現在客戶端可以獲取實時的音頻資料(未壓縮),但是播放時遇到困難,如果用wav格式播放,就需要加檔案頭,可直接在資料流前面加,好像不能播放,請求高手指點指點!!!
uj5u.com熱心網友回復:
問題補充:發現用waveOutWrite()函式可以通過聲卡直接播放,現在請教pb中如何使用waveOutPrepareHeader()和waveOutWrite()兩個函式。請高手多多賜教啊!!!uj5u.com熱心網友回復:
樓主是采用什么方式錄音,如果采用語音卡或語音盒之類的都提供相應的放聲函式uj5u.com熱心網友回復:
是采用語音卡錄音,但是由于我在客戶端監聽,客戶端沒有語音卡,所以只能將錄音資料通過winsock發送到客戶端,在客戶端通過聲卡播放。剛才在網上查到要用waveOutPrepareHeader()和waveOutWrite()兩個函式,但不知如何宣告和使用,請教!uj5u.com熱心網友回復:
請大家踴躍發言,有沒有用過不重要,大家討論討論就有識訓。uj5u.com熱心網友回復:
用語音工具,訊飛就可以uj5u.com熱心網友回復:
直接呼叫API函式了。完全可以的
uj5u.com熱心網友回復:
如果是wav格式的音頻檔案,可以用用Api函式PlaySound:Function Long PlaySound (String Filename,Int Mod,Int Flags ) Library "winmm.dll"
String ls_Sound
ls_Sound = "c:\aa.wav"
PlaySound ( ls_Sound ,0 ,1 )
uj5u.com熱心網友回復:
好像還要呼叫waveoutopen()
Function ulong waveOutOpen(ref ulong lphWaveOut,ulong uDeviceID,ref WAVEFORMAT lpFormat,ulong dwCallback,ulong dwInstance,ulong dwFlags) LIBRARY "winmm.dll"
里面第一個引數是句柄的指標,第二個是設備號,第三個是結構體指標,后面的引數好像是回呼什么的。這些引數在pb里面應該如何實作呢?
uj5u.com熱心網友回復:
Function boolean sndPlaySoundA (string SoundName, ulong Flags) Library "WINMM.DLL"Function ulong waveOutGetNumDevs () Library "WINMM.DLL"
uj5u.com熱心網友回復:
//播放Wavulong lul_numdevs
lul_numdevs = WaveOutGetNumDevs()
If lul_numdevs > 0 Then
sndPlaySoundA(wav, 1)
End If
uj5u.com熱心網友回復:
哦 這個函式不是播放wav檔案的嗎?我想播放的是即時的音頻資料流,邊接受邊播放,如果每接受一個資料流就生成檔案,會不會影響流暢?
uj5u.com熱心網友回復:
希望大家多多發言啊,特別是用過waveoutopen()函式的。uj5u.com熱心網友回復:
希望大家多多發言啊,特別是用過waveoutopen()函式的。uj5u.com熱心網友回復:
我來學習了。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/92180.html
標籤:API 調用
上一篇:PB呼叫程序獲取錯誤資訊
下一篇:高手幫忙
