[問題] 如何使用QT流暢播放聲音?

看板C_and_CPP (C/C++)作者 (盟)時間13年前 (2013/03/26 23:34), 編輯推噓2(207)
留言9則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) QT 是這樣的 我想用QT做個撥放器 PCM(raw wav)聲音資料在硬碟中 但不是想將所有資料一次讀入記憶體 是開塊緩衝慢慢讀取 所以程式該就這種型態 char buf[BUFFER_SIZE]; unsigned long len; InitAudio(); : len = fread(&buf[0], 1, BUFFER_SIZE, fp); while(len >0) { playAudio(&buf[0]....); len = fread(&buf[0], 1, BUFFER_SIZE, fp); }//while StopAudio(); 我試了Qt的phonon 貌似不能播放raw data. 然後用了Qt的QAudioOutput 也無法流倡播放 , 我的代碼在此 http://codepad.org/atoqUhQ2 更慘的是 播到一半會卡著 (該是播放線程的佇列已滿) 那請問有大大知道怎解覺這問題嗎 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 101.12.49.91 ※ 編輯: PloFriend 來自: 101.12.49.91 (03/26 23:37)

03/27 00:48, , 1F
聲音播放用 sync I/O,GUI 會卡到死吧 XD
03/27 00:48, 1F

03/27 00:49, , 2F
如果不想用 Qt 輸出聲音,可以考慮 OpenAL、PulseAudio
03/27 00:49, 2F

03/27 00:50, , 3F
或者乾脆直接用 ALSA
03/27 00:50, 3F

03/27 01:05, , 4F
想跨平台 所以用QT啊。。
03/27 01:05, 4F

03/27 01:19, , 5F
做一個 sequencial 的 QIODevice 給 Phonon 應該可行
03/27 01:19, 5F

03/27 01:20, , 6F
Phonon 的每個平台的 backend 至少都支援 wav
03/27 01:20, 6F

03/27 01:25, , 7F
另外,某些 backend (如 QuickTime) 仍會堅持讀完
03/27 01:25, 7F

03/27 01:25, , 8F
所有 buffer 再行播放
03/27 01:25, 8F

04/01 00:28, , 9F
如果QAudioOutput先setBufferSize(很小的數字)呢?
04/01 00:28, 9F
文章代碼(AID): #1HKR_jNx (C_and_CPP)
文章代碼(AID): #1HKR_jNx (C_and_CPP)