Quantcast
Channel: 英特尔开发人员专区文章
Viewing all articles
Browse latest Browse all 583

使用NexStreaming NexPlayer* SDK开发应用

$
0
0

下载文档

简介

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 Progressive Download、AES128、 HTTPS 协议、h.264、AAC、AAC+、 eAAC+ 代码。 SDK 同时还可支持软件代码和硬件代码 。
  • .smi、.srt、.sub、3GPP 同步文本、TTML 隐藏字幕(仅 PIFF/CFF)、CEA 608 和 CEA 708 隐藏字幕、以及 Web Video Text Track (WebVTT)

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

您需要向 NexStreaming 索要 SDK http://www.nexstreaming.com/downloads-sdk。 SDK 和演示应用 下载完成后,其中自动包含针对英特尔® 芯片组的优化。 SDK 中包含完整文档。 请参考 SDK 文档和示例,根据您的应用选择相应的 API。 使用 SDK 开发应用非常简单。 您可 以将示例代码用作指南。 借助 NexPlayer SDK 开发一个完整应用只需花费 1 小时。

为了将 NexPlayer SDK 集成至 x86 Android 应用,并确保借助基于英特尔® 设备的 NexPlayer SDK 实现最佳体验,您需要执行以下简单步骤。

  • 将 SDK/函数库/文件夹中包含的函数库拷贝至您项目的资产/x86 文件夹。
  • 将 SDK/函数库/文件夹中包含的函数库拷贝至您项目的函数库/x86 文件夹 。
  • 将 SDK/src 文件夹中包含的源文件拷贝至您项目的 src/com/nexstreaming/nexplayerengine 文件夹。

NexPlayer SDK 将检测变化,并通过函数库使用英特尔资源。 所有函数库进入目录后 ,SDK 将自动切换应用的 ARM 和 x86 版本。 如果您想集成最新版 NexPlayer SDK,只 需覆写上述函数库文件即可。

NexPlayer SDK 包含大量函数库,其中包括 DRM 函数库。 这些函数库位于应用/资产 /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” 和 “jb” 分别表示 Ice Cream Sandwich 和 Jelly Bean。 如果您的应用仅支持部分 Android 版本,您可以 将不支持操作系统版本的函数库删除。

支持编解码器的函数库包括:

  • libnexcal_h364_x86.so - video lib for H.264
  • libnexcal_aac_x86.so - audio lib for AAC, AAC-Plus, and HE- AAC
  • libnexcal_mp3_x86.so - audio lib for MP2 and MP3

下列函数库支持文本说明:

  • libnexcal_3gpp_x86.so - for 3GPP timed text captions
  • libnexcal_closedcaption_x86.so - for CEA 608 and CEA 708 closed captions
  • libnexcal_ttml_x86.so - for TTML (CFF) timed text captions
  • libnexcal_webvtt_x86.so - for WebVTT text tracks

为了缩小应用,您可以只包含应用所需的函数库。

应用/函数库/x86 中的函数库需要加载至面向应用文件的 Java* 源代码中的 InitManager()。 例如,针对 “NexHDSample”,将相应的 x86 函数库添加 至 initManager() 中的 app/src/NexHDManager.java:

System.loadLibrary("NexHTTPDownloaderSample_jni");

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

有两种方法可以用来通过 NexPLayer SDK 显示视频: NexVideoRenderer 和 OpenGL* 渲染器。 我们推荐使用 NexVideoRenderer 显示视频。 NexVideoRenderer 根据设备和 操作系统版本选择最合适的渲染器,从而显著降低表面处理和视频渲染的复杂性。 实施 NexVideoRenderer 需要采取下列步骤:

  1. 将环境 (android.content.Context) 传递进构建程序。
  2. 设置监听器(NexPlayer.IListener 和 NexPlayer.IVideoRendererListener)。
  3. 创建 NexPlayer 实例。
  4. 执行针对 NexPlayer (NexPlayer.setNexALFactory and NexPlayer.init) 的必要设置。
  5. 通过 NexPlayer 实例调用 init (NexVideoRenderer.init)。
  6. 将 NexVideoRenderer 实例作为视图添加至您的布局。

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

实时流媒体播放

HTTP 实时流媒体播放支持多个音频流和视频流。setMediaStream() API 支持内容播 放的同时从用户界面选择这些流媒体。 它由 SDK 提供支持,本文对此的提及仅供您参考 。 它主要提供三种使用案例:

  1. 包含可替换音频的随机播放列表。 在本案例中,视频和音频可以独立选择 。
  2. 包含可替换视频的随机播放列表。 在这里,每个记录都包含音频和视频, 但也提供可替换视频流(例如,相同内容不同的摄像镜头角度或视角)。
  3. 包含可替换视频和音频的随机播放列表组合。 该使用案例是上述两种案例 的结合,主视频流提供不同比特率的视频记录,但包含相同的音频,并提供独立音频记录 ,以支持可选语言选择。

x86 NexPlayerDemoApp 的 PnP 分析

在下列分析中,我评估了本地 mp4 文件的开始和闲置状态,以及示例应用 (“NexPlayerDemoApp”) (通过 NexPLayer SDK 开发)中示例流媒体的回放 。 该分析基于 Android 4.4.2 (KitKat) 执行,所使用的工具包括基于英特尔® 凌动™ 处理器的平板电脑 Z3740(速度为 1.6 GHz、配备英特尔® 高清显卡(第七代),并连接 Wi-Fi* )中面向 Android 的 VTune™ 分析器和英特尔® SoC Watch。

基于英特尔® 凌动™ 处理器的平板电脑 Z3740基准


表 1.

闲置状态下的 NexPlayerDemoApp


表 2.

应用闲置期间,基于英特尔® 凌动™ 处理器的平板电脑 Z3740 处于较高的 C0 时间将 导致能耗增加,但 NexPlayerDemoApp 未出现这种情况。 数字非常接近 Z3740 基准。

开始状态下的 NexPlayerDemoApp


表 3.

数字非常接近 Z3740 基准。

视频回放

视频回放期间,x86 版 NexPlayerDemoApp 的 CPU 平均利用率为 33%。 这一行为未 显示异常,并在整体上与内核保持一致。


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

实时流媒体播放

实时流媒体播放期间,x86 版 NexPlayerDemoApp 的 CPU 平均利用率为 25%。 这一 行为未显示异常,并在整体上与内核保持一致。


图 2. x86 NexPlayerDemoApp.的实时流媒体播放时间视图。

电池消耗

实时流媒体播放(占大部分时间)、视频回放和 x86 版短期闲置期间,x86 NexPlayerDemoApp 的耗电量为~3.8W。

结论

借助 NexPlayer SDK 开发应用既快速又简单,而且经过验证能够在 x86 移动设备上 实现高效性和低功耗等特点。

关于作者

Lana Lindberg 是英特尔软件和解决方案事业部 (SSG)、开发人员关系部门、英特尔® 凌动™ 处理器高接触性软件支持团队的一员。 加入 SSG 之前,Lana 是超便携事业部图 形软件验证团队的 OpenGL ES 测试开发人员。

参考资料和有用链接

  1. 面向 Android 6.28 版的 NexStreaming NexPlayer 软硬件 SDK 技术参考 手册。 NexStreaming 公司,2015 年 1 月 8 日。
  2. NexStreaming 网站 www.nexstreaming.com

Viewing all articles
Browse latest Browse all 583

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>