ebs-nativescript-exoplayer
NativeScript 插件,使用 Android 上的 ExoPlayer 视频播放器和 iOS 上的 AVPlayerViewController 来播放本地和远程视频。
npm i --save ebs-nativescript-exoplayer

@nstudio/nativescript-exoplayer

NativeScript 插件,使用 Android 上的 ExoPlayer 视频播放器和 iOS 上的 AVPlayerViewController 来播放本地和远程视频。

npm install @nstudio/nativescript-exoplayer

平台控件使用

Android iOS
Google ExoPlayer iOS AVPlayer

若要使用 100% NativeScript 插件,请使用 NativeScript-VideoPlayer

基于

这是基于 Brad Martin(nStudio,llc)的出色作品 NativeScript-VideoPlayer;Android 端已重写以使用 Google 的增强版 ExoPlayer。iOS 端与原始 NativeScript-VideoPlayer 中的一样。

由于有很多情况下您可能仍然希望有一个 100% NativeScript 插件,Brad 和我决定将其作为一个单独的插件,这样您就可以在需要纯 JavaScript 插件的情况下使用原始 NativeScript-VideoPlayer。

Google ExoPlayer 将大约一个半兆插件添加到 Android 应用程序中。

使用方法

<Page xmlns="http://schemas.nativescript.org/tns.xsd"
xmlns:exoplayer="@nstudio/nativescript-exoplayer">
<StackLayout>

<exoplayer:Video id="nativeexoplayer"
controls="true" finished="{{ videoFinished }}"
loop="true" autoplay="false" height="280"
src="~/videos/big_buck_bunny.mp4" />

<!-- Remote file to test with https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4 -->

</StackLayout>
</Page>

NativeScript Angular 使用

// somewhere at top of your component or bootstrap file
import { registerElement } from "@nativescript/angular";
import { Video } from '@nstudio/nativescript-exoplayer';
registerElement("Video", () => Video);
  <Video
src="https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"
autoplay="true"
height="300"></Video>

属性

  • src - 必需

设置要播放的视频文件,如果可能,请使用本地视频文件以获得最佳性能。文件必须符合平台接受的视频格式。有关参考,请检查平台播放视频的规范。

  • srcType - (仅 Android)
  • 0 = 检测(从 src)
  • 1 = SS
  • 2 = DASH
  • 3 = HLS
  • 4 = 其他
  • enableSubtitles

默认情况下,字幕支持关闭。使用此标志将其打开。

  • subtitles

设置带有字幕的 .srt 文件。这可以是本地文件或互联网 URL。目前仅支持 .srt 格式。

  • autoplay - (布尔值) - 可选

设置视频是否应立即开始播放或等待用户交互。

  • finished - (函数) - 可选

指定当视频达到其持续时间结束时执行事件回调的属性。

  • controls - (布尔值) - 可选

设置使用原生视频播放器的媒体播放控制。

  • muted - (布尔值) - 可选

静音原生视频播放器。

  • loop - (布尔值) - 可选

将原生视频播放器设置为播放结束后循环。

  • backgroundAudio - (布尔值) - 可选

如果设置为 true,则视频的音频不会暂停任何正在播放的音频。相反,它将与现有音频同时播放。这与 Instagram 和 Facebook 播放视频音频的方式相似。

  • fill - (VideoFill) - 可选

Android:当设置为 VideoFill.aspectFill 时,视频的宽高比将不被尊重,它将填充整个可用空间。

iOS

  • VideoFill.default = AVLayerVideoGravityResize
  • VideoFill.aspect = AVLayerVideoGravityResizeAspect
  • VideoFill.aspectFill = AVLayerVideoGravityResizeAspectFill

请参阅此处以获取解释。

  • playbackReady - (函数) - 可选

指定当视频准备播放时执行的事件回调的属性。

  • seekToTimeComplete - (函数) - 可选

指定当视频完成seekToTime操作时执行的事件回调的属性。

  • observeCurrentTime - (布尔值) - 可选

如果设置为true,则currentTimeUpdated回调是可能的。

  • currentTimeUpdated - (函数) - 可选

指定当时间更新时执行的事件回调的属性。

API

  • play() - 开始播放视频
  • pause() - 暂停视频
  • seekToTime(time: number) - 将视频跳转到指定时间(毫秒)
  • getCurrentTime() - 返回视频持续时间中的当前时间(毫秒)
  • getDuration() - 返回视频的持续时间(毫秒)
  • destroy() - 销毁视频播放器并释放资源
  • mute(boolean) - 静音当前视频
  • setVolume() - 设置音量 - 必须介于0和1之间。

仅限Android

  • stop() - 停止播放 - 这将重置播放器并移除视频src

破坏性更改

  • Android现在将在应用挂起/恢复时附加/分离视频,并在注销/重新注册视频时进行注销/重新注册。
  • 默认情况下,将禁用字幕支持。

ExoPlayer加密(仅限Android)

基于密码"secret"创建密钥,输出盐、密钥和iv...(如果您想的话,可以重定向到文件)

  • openssl enc -aes-256-ctr -k secret -P --nosalt 将输出,因为我们没有使用盐
key=2BB80D537B1DA3E38BD30361AA855686BDE0EACD7162FEF6A25FE97BF527A25B
iv =015E42FF678B2B90B743111A396EF850

通常您不会想添加--nosalt,但为了使这个过程更容易理解,因为使用--nosalt时密钥和iv将是相同的,这将给出类似以下输出,但每次盐的不同都会得到不同的密钥/iv

salt=42D57450DAF116BD
key=E8E82C95A1A4FEFE5334578678CAD5699091D34322FDD5811A786BE82961DD00
iv =ED07304DF8D0D0AFA2EB9B13D75BD817

创建加密视频文件

  • openssl enc --nosalt -aes-256-ctr -in small.mp4 -out video.enc -K 2BB80D537B1DA3E38BD30361AA855686BDE0EACD7162FEF6A25FE97BF527A25B -iv 015E42FF678B2B90B743111A396EF850
    • 您可以使用-S <your_salt_value>来设置盐值,而不是使用--nosalt

贡献者

许可证

Apache许可证版本2.0