Versions Compared

Key

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

...

рамка не будет отображаться до поступления видео фреймов.

Цвет рамки

...

Отображение аватаров на потоках только с аудио

Warning

В сборках 5.2.1710 - 5.2.

...

Code Block
themeRDark
mixer_voice_activity_colour=#FF0000

Цвет может задаваться в виде шестнадцатеричного значения c префиксом # или 0x, в формате #RRGGBB. При настройке, указанных выше, рамка индикатора речи будет красной.

Отображение рамки при тишине в аудио потоке

По умолчанию, при обычном темпе речи выступающего рамка индикатора может мигать, что может быть некомфортно для восприятия. В связи с этим, в сборке 5.2.775 добавлена возможность задать интервал времени, в течение которого рамка индикатора речи продолжит отображаться при тишине в потоке. Эта возможность включается настройкой

Code Block
themeRDark
mixer_voice_activity_switch

1725 данная возможность поддерживается только на Ubuntu 20.04 и других системах с glibc 2.31 и новее

Начиная со сборки 5.2.1727, данная возможность поддерживается в Centos 7.6 (glibc 2.17) и более новых системах

В сборке 5.2.1710 добавлена возможность присвоить аудио потоку картинку аватара в формате PNG (с поддержкой прозрачности), JPG или BMP. Картинку можно установить при добавлении потока в микшер запросом /mixer/add :

Code Block
languagejs
themeRDark
{
    "uri": "mixer://mixer1",
    "remoteStreamName": "user2",
    "hasVideo": false,
    "hasAudio": true,
    "avatar": "https://mystorage.com/storage/avatar.png"
}

или для потока, уже добавленного в микшер, запросом /mixer/set_stream_avatar :

Code Block
languagejs
themeRDark
{
    "uri": "mixer://mixer1",
    "remoteStreamName": "user2",
    "avatar": "https://mystorage.com/storage/avatar.png"
}

Поддерживаются следующие способы указания картинки:

  • HTTP URL: https://mystorage.com/storage/avatar.png 
  • file URI: file:///opt/avatar.png 
  • локальное расположение файла /opt/avatar.png 

Аудио поток в микшере при этом выглядит так

Image Added

Если в микшере включено отображение имен потоков, имя аудио потока в этом случае будет размещено там же, где и имя видео потока

Убрать картинку аватара можно запросом /mixer/remove_stream_avatar :

Code Block
languagejs
themeRDark
{
    "uri": "mixer://mixer1",
    "remoteStreamName": "user2"
}

В сборке 5.2.1858 добавлена возможность назначать картинки аватаров автоматически, не используя REST API, по имени потока. В этом случае файлы картинок должны быть помещены в каталог

Code Block
themeRDark
avatar_dir=/usr/local/FlashphonerWebCallServer/avatar

Имя файла должно соответствовать имени потока. Например, к потоку stream1 применится аватар stream1.png. Если поток был добавлен в микшер автоматически, например stream1#mixer1, имя микшера не используется, только имя потока до символа #.

Warning

Назначение картинки аватара при помощи REST API запроса /mixer/set_stream_avatar имеет приоритет над автоматическим назначением картинки

Цвет рамки

В сборке 5.2.741 добавлена возможность управления цветом рамки индикатора речи при помощи настройки

Code Block
themeRDark
mixer_voice_activity_colour=#FF0000

Цвет может задаваться в виде шестнадцатеричного значения c префиксом # или 0x, в формате #RRGGBB. При настройке, указанных выше, рамка индикатора речи будет красной.

Отображение рамки при тишине в аудио потоке

По умолчанию, при обычном темпе речи выступающего рамка индикатора может мигать, что может быть некомфортно для восприятия. В связи с этим, в сборке 5.2.775 добавлена возможность задать интервал времени, в течение которого рамка индикатора речи продолжит отображаться при тишине в потоке. Эта возможность включается настройкой

Code Block
themeRDark
mixer_voice_activity_switch_delay=500

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

...

Code Block
themeRDark
09:17:11,756 ERROR           MixerAgent - MIXER-AGENT-mixer://mixervmixdr52-9d46cd04-5867-4d74-a9d9-baf67f74e7d2 Mixer closed due to error
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:310)
	at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.desktop/sun.font.SunFontManager.getInstance(SunFontManager.java:247)
	at java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:265)
	at java.desktop/java.awt.Font.getStringBounds(Font.java:2606)
	at java.desktop/java.awt.Font.getStringBounds(Font.java:2516)
	at com.flashphoner.media.N.A.A.A(Unknown Source)
	at com.flashphoner.media.mixer.video.presentation.Canvas.computeTextScales(Unknown Source)
	at com.flashphoner.media.mixer.video.presentation.Canvas.writeNative(Unknown Source)
	at com.flashphoner.media.N.A.A(Unknown Source)
	at com.flashphoner.media.N.D.D(Unknown Source)
	at com.flashphoner.media.N.D.A(Unknown Source)
	at com.flashphoner.server.remote.B.B.Г™(Unknown Source)
	at com.flashphoner.server.remote.B.B.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
	... 14 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
	at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
	at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:310)
	at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:312)
	at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
	... 20 more

Решение: установить библиотеку fontconfig

Code Block
languagebash
themeRDark
sudo yum install -y fontconfig

3. При большом количестве участников в микшере, имя участника может отрисовываться поверх рамки индикатора речи

Симптомы: при небольшом размере картинки участника (например, в режиме публикации экрана в микшер) имя участника отображается поверх рамки индикатора речи

...

.<init>(X11FontManager.java:56)
	... 20 more

Решение: установить библиотеку fontconfig

Code Block
languagebash
themeRDark
sudo yum install -y fontconfig

3. При большом количестве участников в микшере, имя участника может отрисовываться поверх рамки индикатора речи

Симптомы: при небольшом размере картинки участника (например, в режиме публикации экрана в микшер) имя участника отображается поверх рамки индикатора речи

Решение: включить отрисовку рамки индикатора речи внутри картинки участника и уменьшить толщину рамки

Code Block
themeRDark
mixer_voice_activity_frame_position_inner=true
mixer_voice_activity_frame_thickness=2

4. При публикации в микшер потока, необходимо избегать B-фреймов в потоке, либо увеличивать буфер на входе микшера

Симптомы: при публикации в микшер потока, закодированного по профилю Main с B-фреймами, выходной поток микшера играет не плавно, есть короткие фризы с пропаданием звука

Решение:

a) кодировать поток без B-фреймов (предпочтительно)

b) увеличить размер буфера на входе микшера (может дать дополнительную задержку)

Code Block
themeRDark
mixer_voicein_activity_frame_position_inner=true
mixer_voice_activity_frame_thickness=2

4. При публикации в микшер потока, необходимо избегать B-фреймов в потоке, либо увеличивать буфер на входе микшера

Симптомы: при публикации в микшер потока, закодированного по профилю Main с B-фреймами, выходной поток микшера играет не плавно, есть короткие фризы с пропаданием звука

Решение:

a) кодировать поток без B-фреймов (предпочтительно)

...

buffering_ms=600

5. Публикация видео 60 FPS в микшер дает дополнительную нагрузку на CPU и системную память

Симптомы: возрастание нагрузки на CPU, расход системной памяти (не Java heap) при публикации в микшер потока 60 FPS

Решение: публиковать в микшер потоки 30 FPS либо использовать более мощный сервер

6. При большом количестве участников надписи могут подергиваться

Симптомы: при большом (более 10) количестве участников в микшере надписи на картинках участников подергиваются

Решение: применить следующие настройки

Code Block
themeRDark
mixer_text_bulk_write=false
mixer_in_buffering_ms=600

5. Публикация видео 60 FPS в микшер дает дополнительную нагрузку на CPU и системную память

Симптомы: возрастание нагрузки на CPU, расход системной памяти (не Java heap) при публикации в микшер потока 60 FPS

Решение: публиковать в микшер потоки 30 FPS либо использовать более мощный сервер

6. При большом количестве участников надписи могут подергиваться

Симптомы: при большом (более 10) количестве участников в микшере надписи на картинках участников подергиваются

Решение: применить следующие настройки

Code Block
themeRDark
mixer_text_bulk_write=false
mixer_text_bulk_write_with_buffer=false

7. При одновременном разговоре большого количества участников некоторых участников слышно хуже, чем других. Проблема характерна для микширования WebRTC потоков, и проявляется в любых решениях, использующих WebRTC и микширование звука, например, в Discord: чем больше данных приходится кодировать в один поток, тем больше семплов аудио может быть отброшено из-за фиксированной частоты дискретизации.

Симптомы: при одновременном разговоре трех и более участников одного из них слышно хуже, чем двух других

Решение:  увеличить битрейт публикации звука и таким образом отправить больше данных на одного участника

Code Block
languagejs
themeRDark
constraints: {
  audio: {
     bitrate: 128000
  }
}

и увеличить битрейт кодирования в Opus на сервере

Code Block
themeRDark
opus.encoder.bitrate=128000text_bulk_write_with_buffer=false

7. При одновременном разговоре большого количества участников некоторых участников слышно хуже, чем других. Проблема характерна для микширования WebRTC потоков, и проявляется в любых решениях, использующих WebRTC и микширование звука, например, в Discord: чем больше данных приходится кодировать в один поток, тем больше семплов аудио может быть отброшено из-за фиксированной частоты дискретизации.

Симптомы: при одновременном разговоре трех и более участников одного из них слышно хуже, чем двух других

Решение:  увеличить битрейт публикации звука и таким образом отправить больше данных на одного участника

Code Block
languagejs
themeRDark
constraints: {
  audio: {
     bitrate: 128000
  }
}

и увеличить битрейт кодирования в Opus на сервере

Code Block
themeRDark
opus.encoder.bitrate=128000

8. При остановке трафика во входящем потоке, этот поток больше не будет кодироваться в микшере

Симптомы: при остановке трафика, например, при сворачивании окна приложения, с которого захватывается поток скриншаринга, в микшере этот поток фризит без восстановления

Решение: снизить минимальный порог FPS для потоков, входящих в микшер

Code Block
themeRDark
mixer_video_stable_fps_threshold=0

9. При снижении битрейта или fps публикации битрейт потока микшера может быть нестабильным

Симптомы: при снижении битрейта и/или fps входящего потока битрейт выходного потока микшера становится нестабильным

Решение: обновить WCS до сборки 5.2.1843 или новее и включить настройку

Code Block
themeRDark
h264_encoder_filler_data_padding=true

10. Для потока, публикуемого в микшер с потерями на канале, в аудио в микшере могут быть слышны щелчки

Симптомы: щелчки и микрофризы потока в микшере

Решение: увеличить глубину буфера для входящих потоков микшера

Code Block
themeRDark
mixer_in_buffering_ms=1000