Разработка Приложений С Использованием Nexstreaming Nexplayer Sdk

Разработка плеера для мобильного приложения — непростая задача.

Необходимо обеспечить поддержку нескольких форматов видео, аудио и субтитров.

Вам придется реализовать воспроизведение файлов, которые хранятся локально и в Интернете.

Если мы вспомним, что результат всей этой работы будет выполнен в среде, к ресурсам которой следует относиться бережно, нам придется заняться оптимизацией.

Как подойти к созданию качественного, быстрого и экономичного плеера для Android? NexPlayer SDK поможет ответить на этот вопрос.



Разработка приложений с использованием NexStreaming NexPlayer SDK



Предварительная информация

NexStreaming — глобальная компания, занимающаяся разработкой программного обеспечения для мобильных устройств.

Штаб-квартира NexStreaming находится в Сеуле, Корея, с филиалами в Испании, США, Японии и Китае.

NexPlayer SDK — самый популярный продукт компании.

Это комплект разработки программного обеспечения для создания плееров.

Некоторые очень известные компании потокового видео используют его в своих мобильных приложениях.

Плеер совместим со всеми современными технологиями DRM. Кроме того, его основной функционал можно расширить.

Например, добавить инструменты улучшения звука, поддержку рекламных вставок и функции сбора статистической информации об аудитории.

NexPlayer SDK от NexStreaming предоставляет инструменты для декодирования и воспроизведения видео и аудио данных.

Разработчики приложений могут использовать SDK для быстрого создания собственных продуктов.

NexPlayer SDK надежен, стабилен и совместим с международными стандартами.

В этом материале вы узнаете, как с помощью NexPlayer SDK создать плеер, предназначенный для архитектуры x86.

Ключевая особенность

NexPlayer SDK оптимизирован для платформы x86, то есть полностью поддерживается устройствами, построенными на этой платформе.

Вот основные возможности SDK:

  • Поддержка Android 1.6 или выше
  • Воспроизведение файлов в форматах mp4, 3gp, avi, asf, piff.
  • Поддерживает HTTP Live Streaming версии 5.0 и технологии прогрессивной загрузки 3GPP. Поддерживает протоколы AES128 и HTTPS, кодеки h.264, AAC, AAC+, eAAC+.

    SDK позволяет работать как с программными, так и с аппаратными кодеками.

  • Поддерживает субтитры в форматах .

    smi, .

    srt, .

    sub, синхронизированном тексте 3GPP, TTML (только PIFF/CFF), CEA 608 и CEA 708. Поддерживает технологию текстовых дорожек веб-видео (WebVTT).



Как создать плеер для платформы x86 с помощью NexPlayer SDK

Сначала вам нужно скачать SDK с сайта NexStreaming, заполнив небольшую форму и дождавшись письма с данными для входа в закрытый раздел сайта, где расположены материалы.

В частности, среди материалов, доступных для скачивания, можно найти демо-приложение в .

apk-файле, которое можно сразу установить на Android-устройство, пример проекта, который можно импортировать в IDE, сам SDK в виде набор библиотек и документация к нему.

Чтобы решить, какие библиотеки вам нужны, следует прочитать документацию и посмотреть примеры.

Разработка приложения с использованием NexPlayer SDK достаточно проста и понятна, а наличие примеров помогает быстро ее освоить.

Создание работающего приложения, использующего NexPlayer SDK, занимает около часа.

Интеграция NexPlayer SDK в приложение Android x86 включает копирование библиотек и исходного кода из SDK в ваш проект. Выполнив несколько простых шагов, описанных ниже, вы оснастите приложение базовыми компонентами, которые позволят ему идеально работать на устройствах, созданных с использованием компонентов Intel. Итак, подготовительный этап выглядит следующим образом:

  • Скопируйте необходимые библиотеки из папки SDK/libs в папку assets/x86 вашего собственного проекта.

  • Скопируйте необходимые библиотеки из папки SDK/libs в папку libs/x86 проекта.

  • Скопируйте файлы Java из SDK/src в папку проекта src/com/nexstreaming/nexplayerengine.
Набор копируемых библиотек зависит от потребностей вашего приложения.

Чтобы понять, какие именно библиотеки вам понадобятся, стоит взглянуть на демо и воспользоваться приведенными ниже рекомендациями.

После копирования NexPlayer SDK обнаружит изменения и сможет использовать библиотеки для эффективной работы с ресурсами Intel. Как только все библиотеки окажутся в указанных каталогах, SDK возьмет на себя переключение между версиями приложения ARM и x86. Если вы хотите обновить библиотеки NexPlayer SDK в существующем проекте, вам просто нужно перезаписать их файлы.

NexPlayer SDK включает в себя большое количество библиотек, в том числе отвечающих за поддержку DRM. Они расположены в папке app/assets/x86. Необходимый набор библиотек включает в себя движок плеера (движок), декодеры (декодеры) и средства визуализации (уровень рендеринга).

Вот их список:

  • libnexplayerengine.so
  • libnexalfactory.so
  • libnexadaptation_layer_for_dlsdk.so
  • libnexralbody_audio.so
  • libnexralbody_video_opengl.so
  • libnexral_nw_ics.so
  • libnexral_nw_jb.so
  • libnexcal_oc_ics.so
  • libnexcal_oc_jb.so
  • libnexcralbody_mc_jb.so
  • libnexcal_in_aac_x86.so
  • libnexcal_in_mp3_x86.so
  • libnexcal_in_amr_x86.so
Некоторые названия библиотек содержат аббревиатуру «ics».

Это указывает на то, что библиотека предназначена для Android Ice Cream Sandwich. Аббревиатура «jb» указывает на то, что библиотека предназначена для Android Jelly Bean. Если ваше приложение предназначено для поддержки определенных версий Android, библиотеки для неподдерживаемых версий можно удалить.

Вот библиотеки, отвечающие за поддержку кодеков:

  • libnexcal_h364_x86.so — библиотека для поддержки видеоформата H.264.
  • libnexcal_aac_x86.so — библиотека поддержки звука для форматов AAC, AAC-Plus и HE-AAC.
  • libnexcal_mp3_x86.so — библиотека поддержки звука для форматов MP2 и MP3.
Ниже представлены библиотеки, задачей которых является поддержка субтитров:
  • libnexcal_3gpp_x86.so – поддержка синхронизированного текстового формата 3GPP
  • libnexcal_closedcaption_x86.so – поддержка форматов CEA 608 и CEA 708.
  • libnexcal_ttml_x86.so — поддержка формата TTML (CFF).

  • libnexcal_webvtt_x86.so — поддержка формата WebVTT.
Чтобы уменьшить размер вашего приложения, включайте в проект только те библиотеки, которые вам нужны.

Необходимо загрузить библиотеки из папки app/libs/x86. Это делается в методе initManager() соответствующего класса.

Например, чтобы использовать «NexHDSample», вам необходимо загрузить соответствующую библиотеку x86 в вышеупомянутый метод класса NexHDManager (app/src/NexHDManager.java) с помощью следующего кода: System.loadLibrary("NexHTTPDownloaderSample_jni");

Как вывести видео на экран приложения, разработанного для платформы x86

При работе с NexPlayer SDK существует два способа отображения видео.

Это использование подсистем вывода на базе NexVideoRenderer и OpenGL. Рекомендуется использовать NexVideoRenderer. Дело в том, что эта подсистема обеспечивает уровень абстракции над сложными операциями управления поверхностью и задачами вывода видео.

Он выбирает наиболее подходящий метод вывода видео в зависимости от аппаратного обеспечения устройства и установленной на нем операционной системы.

Чтобы использовать NexVideoRenderer, вам необходимо сделать следующее:

  1. Передайте контекст (android.context.Context) конструктору.

  2. Установите прослушиватели событий (NexPlayer.IListener и NexPlayer.IVideoRendererListener).

  3. Создайте экземпляр объекта класса NexPlayer.
  4. Выполните необходимую подготовку NexPlayer (используйте методы NexPlayer.setNexAlFactory и NexPlayer.init).

  5. Вызовите метод init объекта класса NexVideoRenderer (NexVideoRenderer.init).

  6. Добавьте экземпляр NexVideoRenderer в качестве элемента пользовательского интерфейса в макет.
Код класса NexVideoRenderer можно найти среди примеров использования SDK по адресу NexPlayerSample/src/com/nexstreaming/nexplayerengine/NexVideoRenderer.java.

Потоковое вещание

Технология HTTP Live Streaming позволяет работать с несколькими аудио- и видеопотоками.

SDK поддерживает эту функцию; его API setMediaStream() позволяет выбирать потоки для воспроизведения.

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

Существуют следующие варианты работы с видео и аудио:

  1. Используйте список воспроизведения с различными вариантами звуковых дорожек.

    При таком подходе видео и аудио можно выбирать независимо.

  2. Используйте плейлист с различными вариантами видео.

    Каждый воспроизводимый видеоклип содержит как аудио, так и видео, но пользователь может выбрать альтернативные параметры видео.

    Например, это может быть материал, снятый камерой под разными углами или с разных точек.

  3. Комбинация списков доступных аудиодорожек и видеоматериалов.

    Это смесь двух описанных выше вариантов.

    Основной видеопоток предоставляет видеодорожки с разным битрейтом, но воспроизводится с одним и тем же звуком.

    При этом доступны дополнительные звуковые дорожки, например, на разных языках.



Анализ производительности и энергопотребления x86-приложения NexPlayerDemoApp

Ниже приведены результаты тестов, которые оценивают нагрузку на систему, создаваемую NexPlayerDemoApp во время запуска, во время простоя, локального воспроизведения MP4 и потоковой передачи видео.

Приложение разработано с использованием NexPlayer SDK. Для анализа использовался анализатор VTune для Android, а также Intel SoC Watch. Тесты проводились на планшете с установленным Android 4.4.2. Он оснащен процессором Intel Atom Z3740 с тактовой частотой 1,6 ГГц и графикой Intel HD (7-го поколения).

Устройство подключено к Интернету через Wi-Fi. ? эталонная точка измерения для устройства, построенного на процессоре Intel Atom Z3740

Состояние пакета процессора % времени, проведенного в указанном состоянии, ядро #0 % времени, проведенного в указанном состоянии, ядро №1 % времени нахождения в указанном состоянии, ядро №2 % времени пребывания в указанном состоянии, ядро №3 % времени графического ядра
С0 4.00 2.50 0.40 0.40 0.30
С6 95.00 95.10 98.30 98.10 99.50
NexPlayerDemoApp в состоянии ожидания
Состояние пакета процессора % времени, проведенного в указанном состоянии, ядро #0 % времени, проведенного в указанном состоянии, ядро №1 % времени нахождения в указанном состоянии, ядро №2 % времени пребывания в указанном состоянии, ядро №3 % времени графического ядра
С0 4.80 3.70 1.2 0.90 0.00
С6 93.50 94.10 93.40 93.90 100.00
Чем больше времени процессор Intel Atom Z3740 проводит в состоянии C0 во время простоя приложения, тем выше энергопотребление.

В случае с NexPlayerDemoApp загрузка ЦП очень близка к эталонной точке измерения, как следствие — бездействие приложения не создает лишней нагрузки на систему.

NexPlayerDemoApp при запуске

Состояние пакета процессора % времени, проведенного в указанном состоянии, ядро #0 % времени, проведенного в указанном состоянии, ядро №1 % времени нахождения в указанном состоянии, ядро №2 % времени пребывания в указанном состоянии, ядро №3 % времени графического ядра
С0 4.80 3.70 1.2 0.90 0.90
С6 93.50 94.10 93.40 93.90 99.00
Эти данные также очень близки к контрольной точке измерения.



Воспроизведение локального видео

При воспроизведении видео x86-версия NexPlayerDemoApp использует в среднем 33% мощности процессора.

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



Разработка приложений с использованием NexStreaming NexPlayer SDK

Загрузка ЦП, создаваемая приложением x86 NexPlayerDemoApp при воспроизведении локального видео

Воспроизведение потокового видео

При воспроизведении потокового видео x86-версия приложения NexPlayerDemoApp использует в среднем 25% мощности процессора.

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



Разработка приложений с использованием NexStreaming NexPlayer SDK

Загрузка процессора, создаваемая приложением x86 NexPlayerDemoApp при воспроизведении потокового видео

Эпотребление энергии

Энергопотребление x86-версии приложения NexPlayerDemoApp составило примерно 3,8 Вт. Большую часть времени во время измерений воспроизводилось потоковое видео; был небольшой период простоя.

Остальное время было потрачено на проигрывание локального видеофайла.



NexPlayerDemoApp на Android 5.0 Lollipop

Давайте выясним, как демо-приложение, созданное с использованием NexPlayer SDK, работает на Android 5.0 Lollipop. Для тестирования мы будем использовать планшет Asus Fonepad 8 на базе процессора Intel Atom Z3530. Устройство подключено к Интернету через Wi-Fi.

Разработка приложений с использованием NexStreaming NexPlayer SDK

Главный экран приложения На главном экране приложения вы можете найти несколько кнопок:
  • История просмотра (History).

  • Открыть URL – при нажатии на эту кнопку появляется всплывающее окно для ввода ссылки на потоковое видео.

  • Просмотр примеров потоков.

    При нажатии этой кнопки открывается экран, на котором вы можете выбрать одно из предложенных видео для просмотра.

  • Воспроизвести локальные файлы – после нажатия этой кнопки программа показывает список папок устройства, в которых расположены видеофайлы.

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

В частности, видео из разных источников воспроизводилось с правильной скоростью и без задержек.



Разработка приложений с использованием NexStreaming NexPlayer SDK

Воспроизвести локальное видео

Полученные результаты

Используя NexPlayer SDK, вы сможете быстро и легко разрабатывать приложения, основной задачей которых является воспроизведение видео.

Кроме того, тесты доказали эффективность и низкое энергопотребление таких приложений на устройствах, построенных на платформе x86. Теги: #Android #NexPlayer SDK #Разработка Android

Вместе с данным постом часто просматривают: