- 版本:6.2.0
- GitHub: https://github.com/nstudio/nativescript-plugins
- NPM: https://npmjs.net.cn/package/%40nstudio%2Fnativescript-exoplayer
- 下载
- 昨天: 18
- 上周: 201
- 上个月: 872
@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 - (函数) - 可选
属性,用于指定当时间更新时执行的事件回调。
- iosAudioSessionCategory - (字符串) - 可选
(仅iOS) 静态属性,用于指定设备音频会话的播放类别。'backgroundAudio'在类实例中必须为false,才能使此属性生效。可用类别
- AVAudioSessionCategoryAmbient
- AVAudioSessionCategoryAudioProcessing
- AVAudioSessionCategoryMultiRoute
- AVAudioSessionCategoryPlayAndRecord
- AVAudioSessionCategoryPlayback
- AVAudioSessionCategoryRecord
- AVAudioSessionCategorySoloAmbient
- AVAudioSessionCategoryAudioProcessing (在iOS 10中已弃用)
有关这些类别的详细信息,请参阅AVAudioSessionCategory文档。
示例用法
import { NgModule } from '@angular/core';
import { Video } from '@nstudio/nativescript-exoplayer';
@NgModule({
// stuff
})
export class AppModule {
constructor() {
Video.iosAudioSessionCategory = 'AVAudioSessionCategoryPlayback';
}
}
API
- play() - 开始播放视频
- pause() - 暂停视频
- seekToTime(time: number) - 将视频定位到指定时间(毫秒)
- getCurrentTime() - 返回视频持续时间中的当前时间(毫秒)
- getDuration() - 返回视频持续时间(毫秒)
- destroy() - 销毁视频播放器并释放资源
- mute(boolean) - 静音当前视频
- setVolume() - 设置音量 - 必须介于0和1之间。
- getVideoSize() - 在iOS上,这将返回呈现层的尺寸,在Android上,将返回播放器视图的尺寸
- getPlayer() - 获取原生播放器实例
仅限Android
- stop() - 停止播放 - 这将重置播放器并移除视频src
重大变更
- Android现在将附加/分离到应用挂起/恢复以及注销/重新注册视频
- 默认情况下,将禁用字幕支持。
ExoPlayer加密(仅限Android)
基于密码"secret"创建密钥,输出盐、密钥和iv...(如果您想,可以重定向到文件)
- openssl enc -aes-256-ctr -k secret -P --nosalt 将输出,因为我们没有使用盐
key=2BB80D537B1DA3E38BD30361AA855686BDE0EACD7162FEF6A25FE97BF527A25B
iv =015E42FF678B2B90B743111A396EF850
通常您不会想添加 --nosalt
,但是为了便于理解,因为密钥和iv将相同,使用 --nosalt 将给出类似以下输出,但是每次盐的不同都会得到不同的密钥/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
- 您可以使用
贡献者
- Alex Semenov
- Alex Ziskind @digitalix
- Blake Nussey
- Brad Martin @BradWayneMartin
- Jibon Lawrence Costa
- Nathanael Anderson @CongoCart
- Nathan Walker @wwwalkerrun
- Osie Fortune
- Alex Gritton
- gaudsonu98
- coltkenn2658
许可
Apache License Version 2.0