Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

В данном случае неактивные узлы будут удаляться из списка через 60 секунд.

Согласование кодеков на Origin и Edge серверах

...

Принципы выбора аудио кодеков при передаче потока через CDN

Проброс звука через CDN

При пробросе в CDN набор предлагаемых кодеков формируется с учетом

  • кодека, используемого для публикации (приоритетный), и
  • кодеков, подерживаемых на Origin и Edge

...

Использование Opus или AAC

Image Removed

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
themeRDark
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
themeRDark
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
languagebash
themeRDark
codecs_exclude_cdn=alaw,ulaw,g729,speex16,g722,telephone-event,flv

...

Кастомное SDP для Flash (flash_handler_publish.sdp и flash_handler_play.sdp

Code Block
themeRDark
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

Image Removed

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
languagebash
themeRDark
codecs_exclude_cdn=alaw,ulaw,g729,speex16,g722,mpeg4-generic,telephone-event,flv

Использование только AAC

Image Removed

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
themeRDark
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 указать

...

languagebash
themeRDark

...

) на формирование 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.

Image Added

Если же ограничить кодеки подписчика только AAC (flash_handler_play.sdp на Edge включает только AAC), то в случае использования другого кодека при публикации RTMP транскодинг будет осуществляться на Edge:

Image Added

Для исключения кодеков при пробросе в CDN, чтобы избежать транскодинга на Edge-сервере, следует использовать настройку codecs_exclude_cdn на Edge. Тогда для проброса в CDN будет использоваться единственный оставшийся кодек, и в случае публикации с каким-либо другим кодеком транскодинг будет осуществляться на Origin-сервере.

Например, если предполагается, что к Edge будут подключаться

1. Только RTMP-подписчики с AAC – исключить все, кроме mpeg4-generic:

Code Block
languagebash
themeRDark
codecs_exclude_cdn=opus,alaw,ulaw,g729,speex16,g722,telephone-event,flv

Image Added

2. Только WebRTC-подписчики с Opus – исключить все, кроме opus:

Code Block
languagebash
themeRDark
codecs_exclude_cdn=mpeg4-generic,alaw,ulaw,g729,speex16,g722,telephone-event,flv

Image Added

Настройка 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-подписчиком.

Выбор кодека при воспроизведении потока

Если в наборе кодеков подписчика есть такой же кодек, как тот, что используется для публикации, то для воспроизведения будет использован этот кодек (вне зависимости от его приоритета). В противном случае, для воспроизведения будет использован приоритетный кодек подписчика, и будет осуществляться транскодинг.


Краткое руководство по тестированию

...