65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 NexStreaming NexPlayer SDK 进行应用程序开发

2015年7月31日

CPOL

7分钟阅读

viewsIcon

10957

本文档介绍了如何使用 NexPlayer SDK 创建一个 x86 播放器应用。

Intel® Developer Zone 提供跨平台应用开发工具和操作指南、平台和技术信息、代码示例以及同行专业知识,帮助开发者实现创新和成功。加入我们的社区,了解 Android物联网Intel® RealSense™ 技术Windows,下载工具、访问开发套件、与志同道合的开发者交流想法,并参与黑客松、竞赛、路演和本地活动。

引言

NexStreaming 是一家全球移动软件公司,总部位于韩国首尔,并在西班牙、美国、日本和中国设有分支机构。其最受欢迎的产品 NexPlayer* SDK 是一款播放器 SDK,被一些最著名的视频服务提供商集成到移动应用中。该播放器兼容行业内所有主流 DRM 技术。此外,它还可以与其他互补技术结合使用,例如广告插播、受众测量或音频增强。NexStreaming NexPlayer SDK 提供音频和视频解码及播放服务。应用开发者可以使用该 SDK 快速构建定制的高效多媒体播放器。NexPlayer SDK 可靠且功能强大,并已被证明兼容国际标准。本文档介绍了如何使用 NexPlayer SDK 创建一个 x86 播放器应用。

平台兼容性

NexPlayer SDK 针对 x86 进行了优化,因此完全支持 x86 设备。NexPlayer 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 字幕以及 Web Video Text Tracks (WebVTT)

如何使用 NexPlayer SDK 创建 x86 播放器应用

您需要从 NexStreaming http://www.nexstreaming.com/downloads-sdk 请求 SDK。下载 SDK 和演示应用后,将自动包含对 Intel® 芯片组的优化。SDK 中包含完整的文档。请参阅 SDK 文档和示例,选择适合您应用的 API。使用 SDK 进行应用开发非常简单直接。您可以参考示例代码作为指南。开发一个完整的 NexPlayer SDK 应用大约需要一小时。

要将 NexPlayer SDK 集成到 x86 Android 应用中,并确保在 Intel® 设备上获得最佳的 NexPlayer SDK 体验,您需要执行以下简单步骤。

  • SDK/libs/ 文件夹中的库复制到您项目的 assets/x86 文件夹中。
  • SDK/libs 文件夹中的库复制到您项目的 libs/x86 文件夹中。
  • 将 SDK/src 文件夹中的源文件复制到您项目的 src/com/nexstreaming/nexplayerengine 文件夹中。

NexPlayer SDK 将检测到此更改,并使用这些库来利用 Intel 资源。一旦所有库都位于这些目录中,应用在 ARM 和 x86 版本之间的切换将是自动的,由 SDK 处理。如果您想集成更新版本的 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”表示 Ice Cream Sandwich,“jb”表示 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 文本轨道

为了减小应用的大小,请仅包含您的应用所需的库。

需要 Java* 源代码中 InitManager() 的应用文件来加载 app/libs/x86 中的库。例如,对于“NexHDSample”,请将相应的 x86 库添加到 app/src/NexHDManager.javainitManager() 中。

System.loadLibrary("NexHTTPDownloaderSample_jni");

如何使用 SDK 在屏幕上显示您的 x86 应用的视频

使用 NexPLayer SDK 显示视频有两种方法:NexVideoRenderer 和 OpenGL* 渲染器。NexVideoRenderer 是显示视频的推荐方法。NexVideoRenderer 通过根据设备和操作系统版本选择最合适的渲染器来抽象处理表面和视频渲染任务的复杂性。要实现 NexVideoRenderer,请执行以下操作:

  1. 向构造函数传递一个上下文 (android.content.Context)。
  2. 设置监听器 (NexPlayer.IListenerNexPlayer.IVideoRendererListener)。
  3. 创建 NexPlayer 实例。
  4. 为 NexPlayer 执行必要的设置 (NexPlayer.setNexALFactoryNexPlayer.init)。
  5. 使用 NexPlayer 实例调用 init (NexVideoRenderer.init)。
  6. NexVideoRenderer 实例作为视图添加到您的布局中。

此渲染器的完整示例位于 NexPlayerSample/src/com.nexstreaming.nexplayerengine/NexVideoRenderer.java

直播流

HTTP Live Streaming 支持多种音频和视频流。setMediaStream() API 允许在播放内容时从用户界面选择这些流。SDK 支持此功能,本文档仅供您参考。有三种可能的用例:

  1. 具有备用音频的变体播放列表。在这种情况下,可以独立选择视频和音频。
  2. 具有备用视频的变体播放列表。在此,每个轨道都包含音频和视频,但提供备用视频流(例如,不同角度的摄像机视图或相同内容的视图)。
  3. 变体播放列表与备用视频和音频的组合。此用例是上述情况的组合,其中主视频流以不同的比特率提供视频轨道,但包含相同的音频,并且提供独立的音频轨道以供可选语言选择。

x86 NexPlayerDemoApp 的 PnP 分析

在以下分析中,我使用 VTune™ analyzer for Android 和 Intel® SoC Watch 在基于 Intel® Atom™ 处理器 Z3740 @1.6 GHz 的平板电脑(配备 Intel® HD Graphics (Gen 7) 并连接 Wi-Fi*)上,针对 Android 4.4.2 (KitKat) 操作系统,评估了使用 NexPLayer SDK 开发的示例应用“NexPlayerDemoApp”的本地 mp4 文件和示例流的启动、空闲及播放情况。

基于 Intel® Atom™ 处理器 Z3740 平板电脑的基线

表 1。

NexPlayerDemoApp 空闲状态

表 2。

基于 Intel® Atom™ 处理器 Z3740 平板电脑的应用空闲期间较高的 C0 时间会导致功耗增加,但 NexPlayerDemoApp 的情况并非如此。其数值非常接近 Z3740 的基线。

NexPlayerDemoApp 启动状态

表 3。

其数值非常接近 Z3740 的基线。

视频播放

在视频播放期间,x86 版本的 NexPlayerDemoApp 平均使用 33% 的 CPU。活动未显示异常,并且与核心总数一致。

图 1. x86 NexPlayerDemoApp 的视频播放时间视图。

直播流

在直播流期间,x86 版本的 NexPlayerDemoApp 平均使用 25% 的 CPU。活动未显示异常,并且与核心总数一致。

图 2. x86 NexPlayerDemoApp 的直播流时间视图。

电池消耗

x86 NexPlayerDemoApp 在结合了直播流(占据大部分时间)、视频播放和极短空闲时间的 x86 版本中,功耗约为 3.8W。

结论

使用 NexPlayer SDK 开发应用快速简便,并且在 x86 移动设备上效率高,功耗低。

关于作者

Lana Lindberg 是 Intel® Software and Solutions Group (SSG) 开发者关系部门 Intel® Atom™ 处理器高接触软件支持团队的成员。加入 SSG 之前,Lana 曾是 Ultra Mobility Group 图形软件验证团队的 OpenGL ES 测试开发者。

参考文献和有用链接

  1. NexStreaming NexPlayer Software-Hardware SDK for Android Version 6.28 Technical Reference Manual. NexStreaming Corporation, January 8, 2015。
  2. NexStreaming 网站 www.nexstreaming.com
© . All rights reserved.