Корректная настройка flashphoner.properties

Alesia

New Member
Добрый день, при большой нагрузке в аудио микшере есть задержка около 2-3 секунды (Мы поставили буферизацию в 700, чтобы избежать прерываний в звуке у пользователей с низким интернетом - это помогло, но 700 ms не равно 2-3 секунды). Еще периодически стрим аудио может просто "удалиться" из аудио микшера в течение 15 минут после начала трансляции (фактически он есть в микшере, но если прослушивать их отдельно - сам стрим идет, а в микшере стрим резко перестал присутствовать).

Позже мы пришлем вам отчет, когда в следующий раз поймаем эти баги. Но сейчас не могли бы вы посмотреть текущие сеттинги и, возможно, сказать, есть ли в них ошибка? Может быть, какой-то параметр указан неверно?


#webrtc ports range
#media_port_from =37001
#media_port_to =40000
media_port_from =40001
media_port_to =55000
#compact_media_port_usage=true
#wcs_activity_timer_timeout=86400000

#codecs
codecs =opus,alaw,ulaw,g729,speex16,g722,mpeg4-generic,telephone-event,h264,vp8,flv,mpv
codecs_exclude_sip =mpeg4-generic,flv,mpv
codecs_exclude_streaming =flv,telephone-event
codecs_exclude_sip_rtmp =opus,g729,g722,mpeg4-generic,vp8,mpv

#cors
disable_rest_auth=true
disable_manager_rmi=false
rest_access_control_allow_origin=*
rest_access_control_allow_headers=content-type,x-requested-with
rest_access_control_allow_methods=POST

#websocket ports
ws.port =8080
wss.port =443

ws.address=*
wss.address=*

client_mode=false

ice_timeout = 60
rtc_ice_add_local_component=true
webrtc_sdp_min_bitrate_bps=1000000
webrtc_sdp_max_bitrate_bps=2500000
inbound_video_rate_stat_send_interval=1
outbound_video_rate_stat_send_interval=1

turn_life_time = 60

rtp_receive_buffer_size=131072
rtp_send_buffer_size =131072

#rest_max_connections=20

#custom mixer settings
mixer_realtime=true
mixer_lossless_video_processor_enabled=false
mixer_idle_timeout=900000
mixer_voice_activity=false
mixer_show_separate_audio_frame=false
mixer_mcu_audio=true
mixer_mcu_video=false
mixer_mcu_multithreaded_delivery=true
mixer_in_buffering_ms=700
#mixer_video_background_filename=/opt/media/white.png
mixer_video_desktop_fullscreen=true
mixer_video_enabled=true

#stream distribution optimization
streaming_distributor_subgroup_enabled=true
streaming_distributor_subgroup_size=50
streaming_distributor_audio_subgroup_size=500
streaming_distributor_subgroup_queue_size=300
streaming_distributor_subgroup_queue_max_waiting_time=5000
streaming_distributor_audio_subgroup_queue_size=300
streaming_distributor_audio_subgroup_queue_max_waiting_time=5000


#cdn
cdn_enabled=true
cdn_ip= *
cdn_nodes_resolve_ip=true
cdn_role=origin

#webrtc_aes_crypto_provider=JCE

#logs
#client_log_level=DEBUG

#padding
mixer_video_desktop_layout_inline_padding=0
mixer_video_desktop_layout_padding=0
mixer_video_grid_layout_middle_padding=0
mixer_video_grid_layout_padding=0
 

Max

Administrator
Staff member
Добрый день.
MCU микшер дает дополнительную нагрузку на сервер. Поэтому при больших нагрузках необходимы настройки оптимизации:
Code:
mixer_type=MULTI_THREADED_NATIVE
mixer_mcu_multithreaded_mix=true
mixer_audio_threads=10
mixer_video_threads=4
Еще периодически стрим аудио может просто "удалиться" из аудио микшера в течение 15 минут после начала трансляции (фактически он есть в микшере, но если прослушивать их отдельно - сам стрим идет, а в микшере стрим резко перестал присутствовать).
Проверить, заходит ли стрим в микшер, можно запросом /mixer/find_all. Этот запрос возвращает для каждого микшера список идентификаторов медиа сессий входящих потоков:
Code:
{
 ...,
 "mediaSessions": [
  "95bf2be8-f459-4f62-9a7f-c588f33e0ad3",
  "693781de-cada-4589-abe1-c3ee55c66901"
 ]
}
Идентификатор медиасессии для потока по его имени можно получить запросом /stream/find, например
Code:
curl -s -H "Content-Type: application/json" -X POST http://localhost:8081/rest-api/stream/find --data '{"name":"participant1","published":true}' | jq '.[] | .mediaSessionId'
Если стрим есть в микшере, но не играет (не слышен) или играет с фризами, проблема может быть в канале публикации. У Вас сильно поднята минимальная граница битрейта видео:
Code:
webrtc_sdp_min_bitrate_bps=1000000
webrtc_sdp_max_bitrate_bps=2500000
Для плохих каналов это много. Кроме того, в последних сборках Chrome больше нет необходимости устанавливать ограничения битрейта на уровне SDP, по нашим тестам, браузер корректно отрабатывает ограничения, заданные через констрейнты:
Code:
    session.createStream({
        name: streamName,
        display: localVideo,
        constraints: {
             video: {
                 minBitrate: 1000,
                 maxBitrate: 2500
             }
        }
        ...
    }).publish();
То есть можно задавать высокий битрейт на стороне клиента, только для пользователей с хорошим каналом. Судя по настройкам
Code:
inbound_video_rate_stat_send_interval=1
outbound_video_rate_stat_send_interval=1
проверка качества канала на стороне клиента у Вас должна работать. Исходя из оценки качества, можно перепубликовать поток с более низкими параметрами.
 

Alesia

New Member
Добрый день, спасибо за ответ, исправили, будем тестировать.

А подскажите, пожалуйста, еще такой момент. Корректно ли добавлять микшер в другой микшер? (Нам это необходимо для рекординга - соединить микшер звука и экран)
Такое ощущение, что начинаются небольшие фризы с голосом, когда мы это делаем при низком инстансе флешфонера. Может быть, стоит отдельно добавлять все стримы звука в микшер рекординга, а не миксовать его с миксером звука?
 

Max

Administrator
Staff member
Корректно ли добавлять микшер в другой микшер?
Нет, некорректно. Может работать, но нежелательно применять в продакшне.
Может быть, стоит отдельно добавлять все стримы звука в микшер рекординга, а не миксовать его с миксером звука?
Да, так более правильно: добавлять все аудио потоки в микшер, где идет экран.
 
Top