Страница 1 из 1
Перекодирование аудио в meetme
Добавлено: 17 ноя 2014, 08:30
drug591
Добрый день. Возможно пишу не в тот раздел. Возможно ли сделать так, чтобы в режиме конференции meetme не перекодировало из одного кодека в другой, а просто микшировало все аудио-каналы и отправляло все подключенным абонентам. Все абоненты используют одинаковый кодек. Т.к. он не поддерживается Asterisk'ом пришлось в заголовках подменять название кодека на поддерживаемый. И естественно в таком виде конференция не работает. Прошу подсказки на каком мементе в meetme происходит перекодирование из "приходящего" кодека в slin и обратно.
Re: Перекодирование аудио в meetme
Добавлено: 17 ноя 2014, 08:42
gland
может что-то не так понял, но в meetme кажется по умолчанию используется G711u, и если на клиентах тот же кодек, то * ничего не перекодирует.
Re: Перекодирование аудио в meetme
Добавлено: 17 ноя 2014, 09:57
drug591
Вот мне этот момент тоже не совсем понятен. Я выводил в файл форматы, которые используются в конференции при звонке. Получалась такая схема: кодек клиента -> ulaw -> slin. И в исходниках meetme явно указано:
Код: Выделить всё
if ((f->frametype == AST_FRAME_VOICE) && (f->subclass.format.id == AST_FORMAT_SLINEAR)) {
if (user->talk.actual) {
ast_frame_adjust_volume(f, user->talk.actual);
}
if (ast_test_flag64(confflags, (CONFFLAG_OPTIMIZETALKER | CONFFLAG_MONITORTALKER))) {
if (user->talking == -1) {
user->talking = 0;
}
res = ast_dsp_silence(dsp, f, &totalsilence);
if (!user->talking && totalsilence < MEETME_DELAYDETECTTALK) {
set_user_talking(chan, conf, user, 1, ast_test_flag64(confflags, CONFFLAG_MONITORTALKER));
}
if (user->talking && totalsilence > MEETME_DELAYDETECTENDTALK) {
set_user_talking(chan, conf, user, 0, ast_test_flag64(confflags, CONFFLAG_MONITORTALKER));
}
}
if (using_pseudo) {
/* Absolutely do _not_ use careful_write here...
it is important that we read data from the channel
as fast as it arrives, and feed it into the conference.
The buffering in the pseudo channel will take care of any
timing differences, unless they are so drastic as to lose
audio frames (in which case carefully writing would only
have delayed the audio even further).
*/
/* As it turns out, we do want to use careful write. We just
don't want to block, but we do want to at least *try*
to write out all the samples.
*/
if (user->talking || !ast_test_flag64(confflags, CONFFLAG_OPTIMIZETALKER)) {
careful_write(fd, f->data.ptr, f->datalen, 0);
}
}
}
Возможно я не туда смотрю. Да и на каком-то ресурсе я встречал, что внутри meetme используется slin.
Re: Перекодирование аудио в meetme
Добавлено: 17 ноя 2014, 12:19
gland
Re: Перекодирование аудио в meetme
Добавлено: 17 ноя 2014, 13:00
drug591
Да, ковыряюсь в исходниках app_meetme.c
Re: Перекодирование аудио в meetme
Добавлено: 17 ноя 2014, 13:21
gland
странный путь решения проблемы...
у клиентов какие кодеки используются?
Re: Перекодирование аудио в meetme
Добавлено: 17 ноя 2014, 13:45
drug591
Кодеки используются самописные, поэтому приходится так извращаться. В принципе я думал сделать так. Перед перекодированием из одного кодека в другой поставить условие если используется определенный формат, то не выполнять перекодирование и сразу переходить к микшированию. Но пока что не могу разобраться как meetme перекодирует аудио.
Re: Перекодирование аудио в meetme
Добавлено: 17 ноя 2014, 13:48
gland
meetme ничего не перекодирует - перекодирует *
Re: Перекодирование аудио в meetme
Добавлено: 17 ноя 2014, 13:52
gland
drug591 писал(а):Кодеки самописные
интересно,чем они примечательны
Re: Перекодирование аудио в meetme
Добавлено: 17 ноя 2014, 14:51
drug591
Кодек ничем не примечателен, просто нужно использовать именно его.
gland писал(а):meetme ничего не перекодирует - перекодирует *
Как я понимаю выбор кодека осуществляется в channel.c в функции set_format и там же происходит определение нужно ли перекодировать из одного формата в другой?