2016-07-15 7 views
2

Мы разрабатываем приложение для некоторых встроенных устройств, у которых пока нет аудиоустройств. На данный момент мы просто оцениваем, работает ли 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, но это было из другого кода, написанного ранее, код, который использует AudioMedia и другие классы в библиотеках PJSIP, которые я подозреваю, автоматически поиск устройств.

Как заявлено, я хочу, чтобы иметь возможность отправлять через одну из серии аудиофайлов, считанных с диском, поэтому не важно, доступны ли аудиоустройства или нет.

Есть ли у PJSIP способ сделать это? Кто-нибудь знает или имеет какой-либо опыт в коде, который выполняет эту (по-видимому) простую задачу?

+0

Некоторым людям также может быть полезно загружать фиктивный звуковой драйвер (если имеется). –

ответ

3

Оказывается, вы можете просто настроить конечную точку использовать нулевые аудиоустройства сразу после libInit() вызова:

myEndpoint.libInit(myEndpointConfig); 
myEndpoint.audDevManager().setNullDev() 

Это предотвратить автоматическое обнаружение от генерации его ошибки.

Смежные вопросы