...
В сборке WCS 5.2.1504 добавлена возможность проигрывания потока с сервера по WebRTC в браузере в нескольких качествах видео, наподобие HLS ABR. При этом браузер автоматически начинает проигрывать первое доступное качество, а клиент может переключаться между ними, при необходимости.
Начиная со сборки WCS 5.2.1663 и SFU SDK 2.0.231 поддерживается автоматическое переключение между доступными качествами ABR при изменении состояния канала. Выбор качества основывается на WebRTC статистике.
Поддерживаемые платформы и браузеры
Chrome | Firefox | Safari | Chromium Edge | |
---|---|---|---|---|
Windows | + | + | + | |
Linux | + | + | + | |
Mac OS | + | + | + | + |
Android | + | + | + | |
iOS | + (iOS 14.4) | + (iOS 14.4) | + |
Поддерживаемые способы публикации
...
Code Block | ||
---|---|---|
| ||
codecs_exclude_sfu=alaw,ulaw,g729,speex16,g722,mpeg4-generic,telephone-event,flv,mpv,vp8,h265
profiles=42e01f,640028
wcs_sfu_bridge_enabled=true |
...
Настройки профилей качества применяются после перезапуска WCS.
Использование одинаковых профилей качества видео для HLS ABR и WebRTC ABR
Начиная со сборки 5.2.1665, если описания профилей видео совпадают для HLS ABR и WebRTC ABR, используются одинаковые кодировщики. Например, для WebRTC ABR
Code Block | ||||
---|---|---|---|---|
| ||||
profiles:
240p:
height: 240
bitrate: 500
codec: h264
gop: 60
fps: 30
480p:
height: 480
bitrate: 1000
codec: h264
gop: 60
fps: 30
720p:
height: 720
bitrate: 1500
codec: h264
gop: 60
fps: 30 |
и HLS ABR
Code Block | ||||
---|---|---|---|---|
| ||||
profiles:
-240p:
audio:
codec: mpeg4-generic
rate: 48000
channels: 2
groupId: audio
video:
height: 240
bitrate: 500
codec: h264
gop: 60
fps: 30
audioGroupId: audio
-480p:
audio:
codec: mpeg4-generic
rate: 48000
channels: 2
groupId: audio
video:
width: 0
height: 480
bitrate: 1000
codec: h264
gop: 60
fps: 30
audioGroupId: audio
-720p:
audio:
codec: mpeg4-generic
rate: 48000
channels: 2
groupId: audio
video:
width: 0
height: 720
bitrate: 1500
codec: h264
gop: 60
fps: 30
audioGroupId: audio |
будет создано 3 кодировщика видео
Должны совпадать следующие параметры профиля видео, если они указаны:
- height
- width (если указана и не равна 0)
- codec
- bitrate
- fps
- gop
- profile
- level
- codecImpl
Сортировка профилей качества видео
Начиная со сборки 5.2.1663, профили качества видео сортируются в том порядке, в каком они указаны в файле /usr/local/FlashphonerWebCallServer/conf/wcs_sfu_bridge_profiles.yml
. Например, при настройке
Code Block | ||||
---|---|---|---|---|
| ||||
profiles:
240:
height: 240
bitrate: 500
codec: h264
gop: 60
fps: 30
480:
height: 480
bitrate: 1000
codec: h264
gop: 60
fps: 30
720:
height: 720
bitrate: 1500
codec: h264
gop: 60
fps: 30
1080:
height: 1080
bitrate: 3000
codec: h264
gop: 60
fps: 30 |
клиент получит список профилей в порядке
Code Block | ||
---|---|---|
| ||
240, 480, 720, 1080 |
Если в настройке встречаются два профиля с одинаковыми названиями, возникает неопределенное поведение. В этом случае сервер будет использовать только последний из профилей с одинаковыми именами.
Транскодирование максимального качества только при наличии B-фреймов в исходном потоке
Для того, чтобы снизить нагрузку на сервер при кодировании видео, в сборке 5.2.1840 добавлена возможность транскодировать максимальное ABR качество (которое обычно соответствует оригинальному разрешению потока) только при наличии B-фреймов в потоке. Эта возможность включается настройкой
Code Block | ||
---|---|---|
| ||
h264_b_frames_force_transcoding=true |
При этом сервер проверяет наличие B-фреймов в исходном потоке, анализируя заданное количество фреймов (по умолчанию 10)
Code Block | ||
---|---|---|
| ||
frame_cnt_to_determine_their_type=10 |
Если в потоке есть B-фреймы, максимальное ABR качество будет транскодироваться, и будет доступно плееру.
Если в потоке нет B-фреймов, максимальное ABR качество не будет транскодироваться. В этом случае оригинальное качество необходимо запросить отдельно с клиента.
Краткое руководство по тестированию
...