Некорректно работает трансляция экрана

Anton1984

Member
Некорректно работает трансляция экрана.
При трансляции экрана на некоторых устройствах у трансляции отображается неправильное соотношение сторон, например Samsung a53
 

Max

Administrator
Staff member
Добрый день.
При трансляции экрана в примере Android SDK 1.1 Screen Sharing из последней сборки 1.1.0.59 на устройстве Samsung S10+ соотношение сторон соответствует экрану телефона
1677573869444.png

Уточните, пожалуйста, какой именно кейс Вы тестируете:
- публикация экрана из мобильного приложения, воспроизведение в браузере
- публикация экрана из браузера на десктопе, просмотр в браузере на мобильном устройстве
 

Max

Administrator
Staff member
Проблемы именно на бюджетных устройствах samsung
Samsung A53 не бюджетная модель, производитель относит ее к среднему сегменту. Кроме того, оболочка OneUI на данном устройстве может быть даже более свежей, чем на S10+, поэтому просим уточнить версию OneUI и версию Android, на которой тестировали.
Повтроно просим уточнить, в каком именно кейсе воспроизводятся проблемы:
- публикация экрана из мобильного приложения (пример Android SDK 1.1 screen-sharing-debug.apk из архива сборки 1.1.0.59), воспроизведение в браузере (пример Player из сборки WebSDK 2.0.228)
- публикация экрана из браузера на десктопе (пример Screen Sharing из сборки WebSDK 2.0.228), просмотр в браузере на мобильном устройстве (пример Player из сборки WebSDK 2.0.228)
Также проверьте метрики потока при публикации: какому соотношению сторон соответствуют VIDEO_WIDTH и VIDEO_HEIGHT.
 

Anton1984

Member
кейс:
- публикация экрана из мобильного приложения, воспроизведение в браузере сохранённой записи потока
—————
Samsung Galaxy A52, Android v11.0 (OneUI v3.1)
—————
Метрики потока при публикации (в потоке == все ок)

{
"mediaSessionId": "3067a400-b826-11ed-b876-239c8f10c5d1",
"videoRate": 72576,
"fps": 60,
"nack": 0,
"pli": 4,
"lostPackets": 0,
"width": 720,
"height": 540
}

—————
Запись:
 

Max

Administrator
Staff member
Уточните, пожалуйста:
- воспроизводится ли проблема, если публиковать поток из примера Android SDK 1.1 screen-sharing-debug.apk из архива сборки 1.1.0.59?
- воспроизводится ли проблема, если обновить OneUI до 4.1 (Android 12)?
Если проблема не воспроизводится в примере, модифицируйте код примера минимально (т.е. не добавляя новых фреймворков и не переписывая код целиком) таким образом, чтобы проблема начала воспроизводиться, и пришлите, используя эту форму
Если проблема не воспроизводится в более свежей версии OneUI, скорее всего, это проблема конкретного устройства, в этом случае мы можем рекомендовать только обновление прошивки.
Метрики потока при публикации (в потоке == все ок)
То, что Вы показываете - не текущие метрики, а то, что заказано на момент публикации. Метрики потока можно получить, если использовать запрос
Code:
POST /rest-api/stream/find HTTP/1.1
Host: 192.168.1.101:8081
Content-Length: 57
Content-Type: application/json

{
    "name":"stream1",
    "published":true,
    "display":["metrics"]
}
В ответе на запрос будет раздел metrics, например
Code:
...
"metrics": {
      "VIDEO_SYNC": 3825719227118,
      "VIDEO_K_FRAMES": 87,
      "AUDIO_SYNC": 3825719227166,
      "VIDEO_NACK": 0,
      "AUDIO_RATE": 32912,
      "AUDIO_LOST": 112,
      "VIDEO_LOST": 0,
      "VIDEO_CODEC": 119,
      "VIDEO_B_FRAMES": 0,
      "VIDEO_PLI": 0,
      "AUDIO_CODEC": 111,
      "VIDEO_RATE": 542200,
      "VIDEO_WIDTH": 640,
      "VIDEO_GOP_SIZE": 60,
      "VIDEO_HEIGHT": 360,
      "VIDEO_FPS": 13,
      "VIDEO_P_FRAMES": 4972
}
...
См также пример: /stream/find
 

Max

Administrator
Staff member
По приведенному Вами логу, краш происходит при попытке остановки сервиса при завершении публикации экрана. К сожалению, проблема не воспроизводится на имеющихся устройствах с Android 10, 11, 12. Пожалуйста, сбросьте телефон к заводским настройкам, установите приложение и дайте необходимые разрешения при публикации.
 

Max

Administrator
Staff member
По основной проблеме данной темы. В примере Screen Sharing констрейнты публикации выставляются равными размерам экрана (GitHub):
Code:
                                    VideoConstraints videoConstraints = new VideoConstraints();
                                    DisplayMetrics metrics = getResources().getDisplayMetrics();
                                    videoConstraints.setResolution(metrics.widthPixels, metrics.heightPixels);
                                    videoConstraints.setVideoFps(metrics.densityDpi);
                                    streamOptions.getConstraints().setVideoConstraints(videoConstraints);
Пожалуйста, проверьте констрейнты, которые Вы выставляете в Вашем приложении. Следует учесть, что соотношение сторон экрана в аппаратах, упоминаемых в теме, 20:9. Если выставить параметры, соотношение которых отличается, изображение может быть искажено.
 
Top