Android 4.4: различия между версиями

Материал из SmartPlayer
Нет описания правки
 
(не показано 6 промежуточных версий этого же участника)
Строка 1: Строка 1:
<languages/>
<translate>
<!--T:1-->
== '''Описание ситуации''' ==
== '''Описание ситуации''' ==
На платформе SmartPlayer раннее создавались клиентские приложения под версии Android-API начиная с 21 версии. Более ранние версии не поддерживались. Но, появилась задача адаптировать клиентское приложение под Android версии 4.4 и создать на нем решение, которое позволит стабильно отыгрывать простые виды трансляций. Данное решение было проработано и реализовано на практике.
На платформе SmartPlayer раньше создавались клиентские приложения под версии API начиная с 21 версии. Более ранние версии не поддерживались. Но, появилась задача адаптировать клиентское приложение под Android версии 4.4 и создать на нём решение, которое позволит стабильно отыгрывать простые виды трансляций. Данное решение было проработано и реализовано на практике.
{{Note|Рекомендуется использовать более новые устройства, соответствующие минимальными требованиям для клиентских приложений (Android 7.0)|warn}}
{{Note|Рекомендуется использовать более новые устройства, соответствующие минимальным требованиям для клиентских приложений (Android 7.0)|warn}}
== '''Логика работы''' ==
== '''Логика работы''' ==
Для реализации рассматривался сценарий, который включал в себя:
Для реализации рассматривался сценарий, который включал в себя:
* проигрывание видео и графического контента;
* проигрывание видео и графического контента;
* запуск трансляции в одной зоне.<br>
* запуск трансляции в одной зоне.<br>
В процессе подготовки клиентского приложения на устройстве с ОС Android 4.4 использовалось клиентское приложение ver. 1.67. От этого клиентского приложения множество функций, которые нагружало «железо» старого устройства.<br>
В процессе подготовки клиентского приложения на устройстве с ОС Android 4.4 использовалось клиентское приложение ver. 1.67. У этого клиентского приложения множество функций, которые нагружало «железо» старого устройства.<br>
== '''Проблемы при реализации''' ==
== '''Проблемы при реализации''' ==
# У версии 4.4 есть проблемы с декодингом. При доработке был изменен декодер и процесс декоди на низкоуровневом взаимодействии.  
# У версии 4.4 есть проблемы с декодингом. При доработке был изменен декодер и процесс декодинга при низкоуровневом взаимодействии.  
# При разработке были проработаны проблемы с сетевым взаимодействием и работой сертификатов. Для корректной работы протоколов безопасности использовалась отдельная библиотека, которая подкладывала нужные сертификаты.
# При разработке были проработаны проблемы с сетевым взаимодействием и работой сертификатов. Для корректной работы протоколов безопасности использовалась отдельная библиотека, которая добавляла необходимые сертификаты.
# Проблема с утечкой памяти. Из-за технических характеристик устройства были проблемы с постоянным переполнением памяти. Реализация получения подключений была оставлена через RX, а проигрывание трансляций было сделано через корутины.
# Проблема с утечкой памяти. Из-за технических характеристик устройства были проблемы с постоянным переполнением памяти. Реализация получения подключений была оставлена через rxJava, а проигрывание трансляций было сделано через корутины.
== '''Ограничения''' ==
== '''Ограничения''' ==
Android 4.4 KitKat является достаточно старой ОС и реализация работы клиентского приложения имеет множество ограничений. Известные на данный момент ограничения:
Android 4.4 KitKat является достаточно старой ОС и реализация работы клиентского приложения имеет множество ограничений. Известные на данный момент ограничения:
Строка 17: Строка 20:
* не работает в многозонном режиме;
* не работает в многозонном режиме;
* работа с аудиоконтентом не рекомендуется из-за избыточной нагрузки на устройство.
* работа с аудиоконтентом не рекомендуется из-за избыточной нагрузки на устройство.
* снятие скриншотов с проигрываемого видео, потому что прошивка не понимает команду snapshot, которая работает с ver. 21 Android SDK. Пример команды: screencap /data/data/org.smartplayer.android.client/screenshot_1002.png. При работе с видео данная команда отправляет в качестве скриншота набор черных пикселей.
[[File:Скриншот_картинки.png|thumb|center| Пример работы скриншота с картинки|800px]]
[[File:Скрирншот_видео.png|thumb|center| Пример работы скриншота с видео|800px]]
== '''Требования к видеоконтенту''' ==
Ниже будет приведен список требований к видеоконтенту:
* Формат кодирования: H264;
* Профиль кодека: baseline
* Уровень кодека: 3.0
* Пресет кодирования: slow (обеспечивает лучшее качество при умеренной скорости обработки)
* CRF (Constant Rate Factor): 23 (обеспечивает сбалансированное качество и размер файла)
* Звук: видео должно быть без аудиодорожки
* Выходной формат: mp4
</translate>

Текущая версия от 16:22, 12 сентября 2025

Описание ситуации

На платформе SmartPlayer раньше создавались клиентские приложения под версии API начиная с 21 версии. Более ранние версии не поддерживались. Но, появилась задача адаптировать клиентское приложение под Android версии 4.4 и создать на нём решение, которое позволит стабильно отыгрывать простые виды трансляций. Данное решение было проработано и реализовано на практике.

Рекомендуется использовать более новые устройства, соответствующие минимальным требованиям для клиентских приложений (Android 7.0)

Логика работы

Для реализации рассматривался сценарий, который включал в себя:

  • проигрывание видео и графического контента;
  • запуск трансляции в одной зоне.

В процессе подготовки клиентского приложения на устройстве с ОС Android 4.4 использовалось клиентское приложение ver. 1.67. У этого клиентского приложения множество функций, которые нагружало «железо» старого устройства.

Проблемы при реализации

  1. У версии 4.4 есть проблемы с декодингом. При доработке был изменен декодер и процесс декодинга при низкоуровневом взаимодействии.
  2. При разработке были проработаны проблемы с сетевым взаимодействием и работой сертификатов. Для корректной работы протоколов безопасности использовалась отдельная библиотека, которая добавляла необходимые сертификаты.
  3. Проблема с утечкой памяти. Из-за технических характеристик устройства были проблемы с постоянным переполнением памяти. Реализация получения подключений была оставлена через rxJava, а проигрывание трансляций было сделано через корутины.

Ограничения

Android 4.4 KitKat является достаточно старой ОС и реализация работы клиентского приложения имеет множество ограничений. Известные на данный момент ограничения:

  • устройство может проигрывать один контент в одной зоне;
  • проигрывает контент графический и видео контент;
  • не работает в многозонном режиме;
  • работа с аудиоконтентом не рекомендуется из-за избыточной нагрузки на устройство.
  • снятие скриншотов с проигрываемого видео, потому что прошивка не понимает команду snapshot, которая работает с ver. 21 Android SDK. Пример команды: screencap /data/data/org.smartplayer.android.client/screenshot_1002.png. При работе с видео данная команда отправляет в качестве скриншота набор черных пикселей.
Пример работы скриншота с картинки
Пример работы скриншота с видео

Требования к видеоконтенту

Ниже будет приведен список требований к видеоконтенту:

  • Формат кодирования: H264;
  • Профиль кодека: baseline
  • Уровень кодека: 3.0
  • Пресет кодирования: slow (обеспечивает лучшее качество при умеренной скорости обработки)
  • CRF (Constant Rate Factor): 23 (обеспечивает сбалансированное качество и размер файла)
  • Звук: видео должно быть без аудиодорожки
  • Выходной формат: mp4