Ошибка ограничения памяти при трансляции экрана с использованием широковещательного расширения и протокола WebRT C на iOS - PullRequest
0 голосов
/ 25 февраля 2020

Это мой первый вопрос, размещенный на stackoverflow.

Я пытаюсь создать приложение для скриншотов, используя протокол BroadcastExtension и WebRT C. Но ограничение памяти широковещательного расширения (50 МБ) настолько ограничено, что, если приложение пытается отправить исходное видео (886 x 1918 30 кадр / с) без какой-либо обработки, оно сразу же умирает после получения предупреждения об использовании памяти. После понижения разрешения и частоты кадров видео проблем нет. Исследование приложения с использованием профилировщика не вызывает проблем с утечками памяти. Я предполагаю, что это из-за кадров, выделенных во время процесса кодирования внутри WebRT C framework.

Так что мой вопрос, можно ли отправить оригинальное видео с использованием WebRT C без какой-либо другой обработки, например Как уменьшить масштаб или уменьшить частоту кадров?

1 Ответ

0 голосов
/ 17 марта 2020

Возможные.

Я забыл упомянуть в вопросе, но я использовал библиотеку Google WebRT C. Я сделал две ошибки. Одним из них является создание модифицированной среды в режиме отладки, а другим - использование программного кодировщика (по умолчанию VP8). Из-за этого кажется, что обработка видеокадров была отложена и накоплена в памяти. DefaultEncoderFactory в основном предоставляет кодировщик, который работает на SW. (По крайней мере на iOS. Android, кажется, автоматически поддерживается кодировщик HW на основе декодера.) К счастью, платформа google WebRT C версии iOS поддерживает аппаратный кодер H264 (EncoderFactoryH264). В других случаях вы должны реализовать это самостоятельно.

Однако при использовании H264 для передачи возникает проблема, которую не могут воспроизводить некоторые платформы, например, Android. Группа Google webrt c, похоже, знает об этой проблеме, но, по крайней мере, мне кажется, что она не была решена должным образом. Для решения этой проблемы требуется дополнительная работа.

...