Кодек в RTMP

R2D2

Member
Привет.
При помощи приложения передаем поток в WCS (видео H.264 и аудио PCMA)
WCS публикует RTMP поток. поток должен быть с видео H.264 и аудио PCMA.
Настройка кодеков в flashphoner.properties:

codecs =alaw,mpeg4-generic,h264
codecs_exclude_sip =mpeg4-generic,flv
codecs_exclude_streaming =flv
codecs_exclude_sip_rtmp =mpeg4-generic

Однако RTMP поток публикуется иногда с аудио PCMA иногда mpeg4-generic
Пример:
Поток опубликован, нужный аудиокодек PCMA
upload_2018-7-4_21-14-26.png

Поток опубликован, (ненужный) аудиокодек mpeg4-generic
upload_2018-7-4_21-12-8.png


Вопрос? как добиться чтобы публиковался постоянно RTMP поток с PCMA? что я делаю не так?
Если поставить в исключение mpeg4-generic, то вообще все перестает работать....
 

Max

Administrator
Staff member
Добрый день.

Опишите как именно проводите тест и что используете. Добавьте скриншоты.
Из описания не совсем ясно.
Например:
1. Публикуем поток WebRTC на WCS сервер из браузера Chrome 67.
https://demo.flashphoner.com/client...ming/two_way_streaming/two_way_streaming.html
2. Играем поток во Flash Player, приложение Flash Streaming.
https://demo.flashphoner.com/client2/examples/demo/streaming/flash_client/streaming.html

В ваших скриншотах видно префикс rtmp_
Это говорит о том, что вы используете RTMP re-publishing
https://demo.flashphoner.com/client...republishing/webrtc-as-rtmp-republishing.html
Этот ре-паблишер по-умолчанию использует AAC кодек.
Если это так, поясните почему вы используете WebRTC as RTMP ре-паблишер. Обычно он используется для стриминга на дргугие серверы, например на youtube и там действительно требуется H.264+AAC, поэтому re-publisher по-умолчанию сконфигурирован на AAC.
 

R2D2

Member
мы публикуем из приложения для мобильного (через вашу библиотеку) и воспроизводим тоже в мобильном приложение (используя вашу библиотеку). Но параллельно проводим обработку звука и видео через REST , поэтому нам принципиально важно иметь публикацию видео с кодеком h.264 а аудио PCM

Мы проводим:
1 публикацию webrtc
2 подписку на webrtc самим wcs чтобы переделать в RTMP
3 публикациь RTMP
4 подписка приложением на просмотр RTMP
5 подписка Backend для обработки
 
Last edited:

R2D2

Member
Друзья ответ будет? как с конфигурировать так чтобы публиковался аудио только в PCMA?
 

Max

Administrator
Staff member
как с конфигурировать так чтобы публиковался аудио только в PCMA?
1. AAC это mpeg4-generic
Соответственно для работы с PCMA нужно удалить AAC из кодеков:
Code:
codecs =alaw,h264
2. При использовании RTMP протокола для любого из следующих трех случаев:
  • публикация потока (flash_handler_publish.sdp)
  • воспроизведение потока (flash_handler_play.sdp)
  • ре-публикация потока на заданный URL (media_transponder.sdp)
действуют SDP конфиги перечисленные здесь:
https://docs.flashphoner.com/x/tgIQ

Можно попробовать корректно убрать из этих конфигов AAC кодек и добавить PCMA, например:
Было
media_transponder.sdp
Code:
v=0
o=- 1988962254 1988962254 IN IP4 0.0.0.0
c=IN IP4 0.0.0.0
t=0 0
a=sdplang:en
m=video 0 RTP/AVP 95 96
a=rtpmap:95 H264/90000
a=fmtp:95 profile-level-id=" + profile + ";packetization-mode=0
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=" + profile + ";packetization-mode=1
a=recvonly
m=audio 0 RTP/AVP 103 96 97 98 99 100 102 108 104
a=rtpmap:108 mpeg4-generic/48000/1
a=rtpmap:96 mpeg4-generic/8000/1
a=rtpmap:97 mpeg4-generic/11025/1
a=rtpmap:98 mpeg4-generic/12000/1
a=rtpmap:99 mpeg4-generic/16000/1
a=rtpmap:100 mpeg4-generic/22050/1
a=rtpmap:104 mpeg4-generic/24000/1
a=rtpmap:102 mpeg4-generic/32000/1
a=rtpmap:103 mpeg4-generic/44100/1
a=recvonly
Стало
Code:
v=0
o=- 1988962254 1988962254 IN IP4 0.0.0.0
c=IN IP4 0.0.0.0
t=0 0
a=sdplang:en
m=video 0 RTP/AVP 95 96
a=rtpmap:95 H264/90000
a=fmtp:95 profile-level-id=" + profile + ";packetization-mode=0
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=" + profile + ";packetization-mode=1
a=recvonly
m=audio 0 RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=recvonly
 

R2D2

Member
Спасибо за ответ.
только у нас в папке /usr/local/FlashphonerWebCallServer..../conf
таких фалов конфигурации нет
 

Max

Administrator
Staff member
Настройки SDP по умолчанию определены в исходном коде ядра WCS. Для того, чтобы изменить эти настройки, необходимо создать указанные файлы в каталоге /usr/local/FlashphonerWebCallServer/conf. При изменении настроек SDP, требуется перезапуск сервера.
Это цитата из документации
 

R2D2

Member
Помогло,все аудио потоки в PCMA. Но один из 5 потоков довольно часто не создается (RTMP поток Flash) с Null Pointer Exception.....
 

Max

Administrator
Staff member
Добрый день. Проверили логи, у Вас слишком короткий промежуток между публикацией потока и подпиской на него, добавьте на стороне подписчика некоторую задержку 1-1.5 секунды. Об этом говорят логи
Code:
09:03:47,701 INFO         ServerHandler - API-ASYNC-pool-8-thread-1 client requested live stream: rtmp_9e2e87a098adb4, stream not found
09:03:47,701 ERROR         MediaHandler - API-ASYNC-pool-8-thread-1 playStream actualSession doesn't exists, session name rtmp_9e2e87a098adb4
NullPointerException в нашем окружении воспроизвести не удалось. Просьба обновиться до крайней версии 5.1 и добавить в conf/log4j.properties строку
Code:
log4j.logger.com.flashphoner.server.rtmp.rtmp.server.ServerStream=DEBUG
При повторном воспроизведении этого exception просьба выслать логи.
 
Top