我們正在爲一些還沒有任何音頻設備的嵌入式硬件開發應用程序。目前,我們只是簡單地評估PJSIP是否可以在硬件上運行,並且可以通過網絡發送音頻數據。PJSIP(PJSUA2)是否可以在沒有音頻設備的情況下使用?
爲此,我們有一個客戶端需要從文件中讀取音頻數據,通過PJSIP將其發送到服務器,然後將其寫入另一個文件,因此我們可以簡單地比較兩個文件他們聽起來是一樣的,不一定是完全相同的內容)。因此,設置會是這樣的:
+--------+
(Audio file 1) --> |_Client_| +--------+
| PJSIP | --> |_PJSIP__|
+--------+ | Server | --> (Audio file 2)
+--------+
我們擁有的應用程序編譯,但是,當我運行的客戶端應用程序,並嘗試建立呼叫服務器,它抱怨沒有任何音頻硬件(格式化的可讀性):
02:14:47.636 call.cpp
pjsua_call_make_call(
acc.getId(),
&pj_dst_uri,
param.p_opt,
this,
param.p_msg_data,
&id)
error: Unable to find default audio device
(PJMEDIA_EAUD_NODEFDEV)
(status=420006)
[../src/pjsua2/call.cpp:485]
我懷疑服務器在接受呼叫時會出現同樣的問題,但我們還沒有那麼遠。現在
我知道有沒有音頻硬件(的dmesg
輸出清楚地表明,ALSA設備列表是空的),但是這不是我的問題。
我們遵循的準則爲每個子類Call
,但它是從在PJSIP圖書館,我懷疑是自動設備進行搜索的使用AudioMedia
和其它類早先寫了一些其他的代碼,代碼。
如上所述,我希望能夠通過從磁盤讀取的一系列音頻文件之一發送,因此不在乎音頻設備是否可用。
PJSIP有辦法做到這一點嗎?有沒有人知道或有任何代碼執行此(看似)簡單任務的經驗?
有些人可能會發現加載虛擬聲音驅動程序(如果可用)代替它也很有用。 –