作者chigi ( )
看板C_and_CPP
標題[問題] QAudioInput, QAudioOutput橋接
時間Wed Jun 1 18:53:49 2016
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Qt
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
Qt
問題(Question):
想把AudioInput(像是mic)的資料從AudioOutput輸出
但QAudioInput::Start(QIODevice *) <這是把mic資料轉到QIODevice裡
QAudioOutput::Start(QIODevice *) <這是把QIODevice的資料丟去給output
而我用QBuffer作他們中間的橋梁,
但是動不了...
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
QByteArray buffer;
QBuffer cable(&buffer);
cable.open(QIODevice::ReadWrite);
.
. QAudioInput, QAudioOutput 宣告
.
audioInput->start(&cable);
audioOutput->start(&cable);
補充說明(Supplement):
如果把output的cable改成QFile(也是QIODevice的一種),就可以從耳機輸出聲音;
如果把input的cable改成QFile,就變成recorder的功能,這兩者看起來是正常的
但是不知道QBuffer的用法哪邊出了問題..
請各位幫忙。謝謝。
--
自問自答
主要是QBuffer的 IO點只有一個,
所以多用一個QBuffer去做它的讀寫頭,
然後cable_in負責write,cable_out負責read
就可以接起來了。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.21.58
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1464778431.A.445.html
※ 編輯: chigi (220.135.21.58), 06/02/2016 14:40:50
推 bab7171: 推測因為headset是錄音放音是同個的device 06/03 08:17
→ bab7171: 你這樣宣告是可以 06/03 08:17
→ bab7171: 但不同裝置你這樣宣告可能不行 06/03 08:18