Чат  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Перекодирование аудио в meetme

Раздел для разработчиков для обсуждения программных и аппаратных продуктов и их реализации.

Модератор: april22

Перекодирование аудио в meetme

Сообщение drug591 » 17 ноя 2014, 09:30

Добрый день. Возможно пишу не в тот раздел. Возможно ли сделать так, чтобы в режиме конференции meetme не перекодировало из одного кодека в другой, а просто микшировало все аудио-каналы и отправляло все подключенным абонентам. Все абоненты используют одинаковый кодек. Т.к. он не поддерживается Asterisk'ом пришлось в заголовках подменять название кодека на поддерживаемый. И естественно в таком виде конференция не работает. Прошу подсказки на каком мементе в meetme происходит перекодирование из "приходящего" кодека в slin и обратно.
drug591
 
Сообщений: 56
Зарегистрирован: 24 фев 2014, 00:01

Re: Перекодирование аудио в meetme

Сообщение gland » 17 ноя 2014, 09:42

может что-то не так понял, но в meetme кажется по умолчанию используется G711u, и если на клиентах тот же кодек, то * ничего не перекодирует.
gland
 
Сообщений: 113
Зарегистрирован: 25 янв 2012, 11:07

Re: Перекодирование аудио в meetme

Сообщение drug591 » 17 ноя 2014, 10:57

Вот мне этот момент тоже не совсем понятен. Я выводил в файл форматы, которые используются в конференции при звонке. Получалась такая схема: кодек клиента -> 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.
drug591
 
Сообщений: 56
Зарегистрирован: 24 фев 2014, 00:01

Re: Перекодирование аудио в meetme

Сообщение gland » 17 ноя 2014, 13:19

речь про это?
gland
 
Сообщений: 113
Зарегистрирован: 25 янв 2012, 11:07

Re: Перекодирование аудио в meetme

Сообщение drug591 » 17 ноя 2014, 14:00

Да, ковыряюсь в исходниках app_meetme.c
drug591
 
Сообщений: 56
Зарегистрирован: 24 фев 2014, 00:01

Re: Перекодирование аудио в meetme

Сообщение gland » 17 ноя 2014, 14:21

странный путь решения проблемы...
у клиентов какие кодеки используются?
gland
 
Сообщений: 113
Зарегистрирован: 25 янв 2012, 11:07

Re: Перекодирование аудио в meetme

Сообщение drug591 » 17 ноя 2014, 14:45

Кодеки используются самописные, поэтому приходится так извращаться. В принципе я думал сделать так. Перед перекодированием из одного кодека в другой поставить условие если используется определенный формат, то не выполнять перекодирование и сразу переходить к микшированию. Но пока что не могу разобраться как meetme перекодирует аудио.
drug591
 
Сообщений: 56
Зарегистрирован: 24 фев 2014, 00:01

Re: Перекодирование аудио в meetme

Сообщение gland » 17 ноя 2014, 14:48

meetme ничего не перекодирует - перекодирует *
gland
 
Сообщений: 113
Зарегистрирован: 25 янв 2012, 11:07

Re: Перекодирование аудио в meetme

Сообщение gland » 17 ноя 2014, 14:52

drug591 писал(а):Кодеки самописные

интересно,чем они примечательны
gland
 
Сообщений: 113
Зарегистрирован: 25 янв 2012, 11:07

Re: Перекодирование аудио в meetme

Сообщение drug591 » 17 ноя 2014, 15:51

Кодек ничем не примечателен, просто нужно использовать именно его.
gland писал(а):meetme ничего не перекодирует - перекодирует *

Как я понимаю выбор кодека осуществляется в channel.c в функции set_format и там же происходит определение нужно ли перекодировать из одного формата в другой?
drug591
 
Сообщений: 56
Зарегистрирован: 24 фев 2014, 00:01


Вернуться в Разработка

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

© 2008 — 2018 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH