...
В данном случае неактивные узлы будут удаляться из списка через 60 секунд.
Согласование кодеков на Origin и Edge серверах
...
Принципы выбора аудио кодеков при передаче потока через CDN
Проброс звука через CDN
При пробросе в CDN набор предлагаемых кодеков формируется с учетом
- кодека, используемого для публикации (приоритетный), и
- кодеков, подерживаемых на Origin и Edge
...
Использование Opus или AAC
1. Ретрансляция потока, захваченного из браузера Chrome
1.1. Origin принимает поток H.264+Opus с Chrome.
1.2. Edge забирает с Origin поток по WebRTС H.264+Opus, на Origin нет транскодинга.
1.3. Зритель забирает с Edge поток:
1.3.1. по H.264+Opus, на Edge нет транскодинга;
1.3.2. по H.264+AAC, на Edge транскодинг Opus > AAC.
2. Ретрансляция потока, захваченного c RTMP-кодировщика
2.1. Origin принимает поток H.264 с RTMP стримера:
2.1.1 звук в AAC без транскодинга:
2.1.2 звук в Speex с транскодингом в AAC.
2.2. Edge забирает с Origin поток по WebRTС H.264+AAC.
2.3. Зритель забирает с Edge поток:
2.3.1. по H.264+Opus, на Edge транскодинг AAC > Opus;
2.3.2. по H.264+AAC, на Edge нет транскодинга.
Для работы такой CDN необходимо настроить кодеки следующим образом:
на Origin сервере
необходимо создать файл flash_handler_publish.sdp
Code Block | ||
---|---|---|
| ||
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 96
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=42e01f;packetization-mode=1
a=sendonly
m=audio 0 RTP/AVP 108
a=rtpmap:108 mpeg4-generic/48000/1
a=sendonly |
на Edge сервере
...
- (flashphoner.properties, codecs)
с исключением кодеков, указанных в codecs_exclude_cdn (в flashphoner.properties) на Edge.
По умолчанию (если AAC не исключен настройками) в SDP указаны следующие частоты дискретизации AAC: 48, 44.1, 32, 24, 22.05, 16, 12, 8 kHz.
Например, если Edge запрашивает с Origin RTMP-поток, опубликованный с AAC 48 kHz, аудио SDP будет следующим
Code Block | ||
---|---|---|
| ||
m=audio 31006 RTP/SAVPF 102 111 8 18 100 9 103 104 105 106 107 108 109 110
c=IN IP4 192.168.1.5
a=mid:1
a=rtpmap:102 mpeg4-generic/48000/2
a=rtpmap:111 opus/48000/2
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:100 speex/16000
a=rtpmap:9 G722/8000
a=rtpmap:103 mpeg4-generic/44100/2
a=rtpmap:104 mpeg4-generic/32000/2
a=rtpmap:105 mpeg4-generic/24000/2
a=rtpmap:106 mpeg4-generic/22050/2
a=rtpmap:107 mpeg4-generic/16000/2
a=rtpmap:108 mpeg4-generic/12000/2
a=rtpmap:109 mpeg4-generic/11025/2
a=rtpmap:110 mpeg4-generic/8000/2 |
PCMU по умолчанию не предлагается и будет включен, только если исключить PCMA:
Code Block | ||||
---|---|---|---|---|
| ||||
codecs_exclude_cdn=alaw,ulaw,g729,speex16,g722,telephone-event,flv |
...
Кастомное SDP для Flash (flash_handler_publish.sdp и flash_handler_play.sdp
Code Block | ||
---|---|---|
| ||
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 96
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=42e01f;packetization-mode=1
a=recvonly
m=audio 0 RTP/AVP 108
a=rtpmap:108 mpeg4-generic/48000/1
a=recvonly |
Использование только Opus
1. Ретрансляция потока, захваченного из браузера Chrome
1.1. Origin принимает поток H.264+Opus с Chrome.
1.2. Edge забирает с Origin поток по WebRTС H.264+Opus, на Origin нет транскодинга.
1.3. Зритель забирает с Edge поток по H.264+Opus, на Edge нет транскодинга.
2. Ретрансляция потока, захваченного c RTMP-кодировщика
2.1. Origin принимает поток H.264 с RTMP стримера:
2.1.1 звук в AAC с транскодингом в Opus:
2.1.2 звук в Speex с транскодингом в Opus.
2.2. Edge забирает с Origin поток по WebRTС H.264+Opus.
2.3. Зритель забирает с Edge поток по H.264+Opus, на Edge нет транскодинга.
Для работы такой CDN необходимо настроить кодеки следующим образом:
на Origin сервере
оставить настройки кодеков по умолчанию
на Edge сервере
необходимо в файле flashphoner.properties указать
Code Block | ||||
---|---|---|---|---|
| ||||
codecs_exclude_cdn=alaw,ulaw,g729,speex16,g722,mpeg4-generic,telephone-event,flv |
Использование только AAC
1. Ретрансляция потока, захваченного из браузера Chrome
1.1. Origin принимает поток H.264+Opus с Chrome с транскодингом Opus > AAC.
1.2. Edge забирает с Origin поток по WebRTС H.264+AAC.
1.3. Зритель забирает с Edge поток по H.264+AAC, на Edge нет транскодинга.
2. Ретрансляция потока, захваченного c RTMP-кодировщика
2.1. Origin принимает поток H.264 с RTMP стримера:
2.1.1 звук в AAC без транскодинга:
2.1.2 звук в Speex с транскодингом в AAC.
2.2. Edge забирает с Origin поток по WebRTС H.264+AAC.
2.3. Зритель забирает с Edge поток по H.264+AAC, на Edge нет транскодинга.
Для работы такой CDN необходимо настроить кодеки следующим образом:
на Origin сервере
необходимо создать файл flash_handler_publish.sdp
Code Block | ||
---|---|---|
| ||
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 96
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=42e01f;packetization-mode=1
a=sendonly
m=audio 0 RTP/AVP 108
a=rtpmap:108 mpeg4-generic/48000/1
a=sendonly |
на Edge сервере
необходимо в файле flashphoner.properties указать
...
language | bash |
---|---|
theme | RDark |
...
) на формирование SDP для проброса в CDN не влияет.
С настройками по умолчанию транскодинга не будет, например, в следующих случаях:
- публикация на Origin WebRTC (Opus), воспроизведение как WebRTC на Edge (Opus)
- публикация на Origin RTMP (AAC, любая из перечисленных выше частот дискретизации), воспроизведение как RTMP на Edge (AAC та же частота дискретизации, без ресемплинга)
- публикация на Origin RTMP (Speex), воспроизведение как RTMP на Edge (Speex)
Если в наборе кодеков подписчика нет того, что используется для публикации, то транскодинг осуществляется на Edge-сервере:
- публикация на Origin WebRTC (Opus), воспроизведение как RTMP на Edge (AAC): транскодинг Opus-AAC на Edge
- публикация на Origin RTMP (AAC), воспроизведение как WebRTC на Edge (Opus): транскодинг AAC-Opus на Edge
- публикация на Origin RTMP (Speex), воспроизведение как WebRTC на Edge (Opus): транскодинг Speex-Opus на Edge
- публикация на Origin RTMP (Speex), воспроизведение как RTMP на Edge (AAC): транскодинг Speex-AAC на Edge
Если набор кодеков подписчика включает не только AAC, то при воспроизведении RTMP как RTMP без транскодинга может использоваться, например, и Speex.
Если же ограничить кодеки подписчика только AAC (flash_handler_play.sdp на Edge включает только AAC), то в случае использования другого кодека при публикации RTMP транскодинг будет осуществляться на Edge:
Для исключения кодеков при пробросе в CDN, чтобы избежать транскодинга на Edge-сервере, следует использовать настройку codecs_exclude_cdn
на Edge. Тогда для проброса в CDN будет использоваться единственный оставшийся кодек, и в случае публикации с каким-либо другим кодеком транскодинг будет осуществляться на Origin-сервере.
Например, если предполагается, что к Edge будут подключаться
1. Только RTMP-подписчики с AAC – исключить все, кроме mpeg4-generic:
Code Block | ||||
---|---|---|---|---|
| ||||
codecs_exclude_cdn=opus,alaw,ulaw,g729,speex16,g722,telephone-event,flv |
2. Только WebRTC-подписчики с Opus – исключить все, кроме opus:
Code Block | ||||
---|---|---|---|---|
| ||||
codecs_exclude_cdn=mpeg4-generic,alaw,ulaw,g729,speex16,g722,telephone-event,flv |
Настройка SDP для публикации и воспроизведения RTMP потока в CDN
flash_handler_publish.sdp
flash_handler_publish.sdp используется в качестве SDP при публикации в случае подключения к потоку подписчика до того, как WCS получил аудио и видео от публикующего клиента (то есть до того, как известен реально используемый кодек).
В этом случае приоритет кодеков будет определяться порядком в flash_handler_publish.sdp. Если же flash_handler_publish.sdp нет, то по умолчанию приоритетным аудио кодеком будет Speex.
Например, с настройками по умолчанию (без flash_handler_publish.sdp) при публикации RTMP (AAC) на Origin и воспроизведении как WebRTC (Opus) на Edge в CDN
- если подписчик подключается после того, как получено аудио от публикующего (то есть известно, что используется AAC): транскодинг AAC-Opus на Edge
- если подписчик подключается до того, как получено аудио от публикующего (используется кодек по умолчанию - Speex): транскодинг AAC-Speex на Origin и транскодинг Speex-Opus на Edge
Если же на Origin есть flash_handler_publish.sdp, в котором первым указан не Speex, а, например, AAC, то AAC будет использоваться и в том случае, если подписчик подключается до того, как получено аудио от публикующего. То есть, если заранее известен кодек публикации, то указав его в flash_handler_publish.sdp, можно избежать дополнительного транскодинга.
flash_handler_publish.sdp не применяется для ограничения кодеков публикации: если исключить какой-либо кодек из flash_handler_publish.sdp, то он все равно может использоваться для публикации.
flash_handler_play.sdp
flash_handler_play.sdp используется только для SDP, предлагаемого подписчику, и не применяется для ограничения кодеков при пробросе в CDN. Если исключить какой-либо кодек из flash_handler_play.sdp, то он не будет использоваться для воспроизведения потока RTMP-подписчиком.
Выбор кодека при воспроизведении потока
Если в наборе кодеков подписчика есть такой же кодек, как тот, что используется для публикации, то для воспроизведения будет использован этот кодек (вне зависимости от его приоритета). В противном случае, для воспроизведения будет использован приоритетный кодек подписчика, и будет осуществляться транскодинг.
Краткое руководство по тестированию
...