ios - NativeScript iOS VersaPlayer 实现
问题描述
我正在尝试为 iOS实现VersaPlayer ,如下所示:
公共播放器(){
let versa = TestViewController.new();
let appWindow = UIApplication.sharedApplication.keyWindow;
appWindow.rootViewController.presentViewControllerAnimatedCompletion(versa, true, null);
}
TestViewController:
导出类 TestViewController 扩展 UIViewController {
public viewDidLoad() { super.viewDidLoad(); let url = NSURL.URLWithString("https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_10mb.mp4") let item = VersaPlayerItem.playerItemWithURL(url); let player = VersaPlayerView.alloc(); player.setWithItem(item); this.view.addSubview(player); } }
但我收到此错误:
NativeScript caught signal 11.
Native Stack:
1 0x10301d84f sig_handler(int)
2 0x107614b5d _sigtramp
3 0x0
4 0x10755ab4d libunwind::UnwindCursor<libunwind::LocalAddressSpace, libunwind::Registers_x86_64>::step()
5 0x10755ee4c _Unwind_RaiseException
6 0x1071374aa __cxa_throw
7 0x105b4ebfa _objc_exception_destructor(void*)
8 0x106cfa735 +[NSException raise:format:]
9 0x105ac8b89 $s11VersaPlayer0aB4ViewC6layout4view4intoySo6UIViewC_AHSgtF
10 0x105ac89c0 $s11VersaPlayer0aB4ViewC7prepareyyF
11 0x105ac96fa $s11VersaPlayer0aB4ViewC3set4itemyAA0aB4ItemCSg_tF
12 0x105ac9a7c $s11VersaPlayer0aB4ViewC3set4itemyAA0aB4ItemCSg_tFTo
13 0x1039b263d ffi_call_unix64
14 0x122a3b860
JS Stack:
1 setWithItem@[native code]
2 viewDidLoad@file:///src/app/item/items.component.ts:125:27
3 presentViewControllerAnimatedCompletion@[native code]
4 player@file:///src/app/item/items.component.ts:111:77
5 @:17:33
6 callWithDebugContext@file:///node_modules/@angular/core/fesm5/core.js:30308:0
7 dispatchEvent@file:///node_modules/@angular/core/fesm5/core.js:19858:0
8 @file:///node_modules/nativescript-angular/renderer.js:241:0
9 onInvoke@file:///node_modules/@angular/core/fesm5/core.js:26255:0
10 run@file:///node_modules/nativescript-angular/zone-js/dist/zone-nativescript.js:138:0
11 zonedCallback@file:///node_modules/nativescript-angular/renderer.js:240:0
12 notify@file:///node_modules/tns-core-modules/data/observable/observable.js:110:0
13 _emit@file:///node_modules/tns-core-modules/data/observable/observable.js:127:0
14 tap@file:///node_modules/tns-core-modules/ui/button/button.js:216:0
15 UIApplicationMain@[native code]
16 _start@file:///node_modules/tns-core-modules/application/application.js:277:0
我也试过Placeholder
这样使用:
<Placeholder (creatingView)="creatingView($event)" height="200"></Placeholder>
public creatingView(args: CreateViewEventData) {
let url = NSURL.URLWithString("https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_10mb.mp4")
let player = VersaPlayer.playerWithURL(url)
args.view = player;
}
错误:
NativeScript caught signal 11.
Native Stack:
1 0x1027cf84f sig_handler(int)
2 0x1064e0b5d _sigtramp
3 0x0
4 0x106426b4d libunwind::UnwindCursor<libunwind::LocalAddressSpace, libunwind::Registers_x86_64>::step()
5 0x10642ae4c _Unwind_RaiseException
6 0x1060034aa __cxa_throw
7 0x104a1abfa _objc_exception_destructor(void*)
8 0x105be4c94 -[NSObject(NSObject) doesNotRecognizeSelector:]
9 0x105bcb623 ___forwarding___
10 0x105bcd418 _CF_forwarding_prep_0
11 0x1083923d3 -[UIView(Internal) _addSubview:positioned:relativeTo:]
12 0x10316463d ffi_call_unix64
13 0x12214caa0
JS Stack:
1 addSubview@[native code]
2 _addViewToNativeVisualTree@file:///node_modules/tns-core-modules/ui/core/view/view.js:565:0
3 _setupUI@file:///node_modules/tns-core-modules/ui/core/view-base/view-base.js:529:0
4 @file:///node_modules/tns-core-modules/ui/core/view-base/view-base.js:533:0
5 eachChildView@file:///node_modules/tns-core-modules/ui/layouts/layout-base-common.js:125:0
6 eachChild@file:///node_modules/tns-core-modules/ui/core/view/view-common.js:992:0
7 _setupUI@file:///node_modules/tns-core-modules/ui/core/view-base/view-base.js:532:0
8 @file:///node_modules/tns-core-modules/ui/core/view-base/view-base.js:533:0
9 eachChildView@file:///node_modules/tns-core-modules/ui/layouts/layout-base-common.js:125:0
10 eachChild@file:///node_modules/tns-core-modules/ui/core/view/view-common.js:992:0
11 _setupUI@file:///node_modules/tns-core-modules/ui/core/view-base/view-base.js:532:0
12 @file:///node_modules/tns-core-modules/ui/core/view-base/view-base.js:533:0
13 eachChildView@file:///node_modules/tns-core-modules/ui/content-view/content-view.js:70:0
14 eachChildView@file:///node_modules/tns-core-modules/ui/page/page-common.js:126:0
15 eachChild@file:///node_modules/tns-core-modules/ui/core/view/view-common.js:992:0
16 _setupUI@file:///node_modules/tns-core-modules/ui/core/view-base/view-base.js:532:0
17 _addViewCore@file:///node_modules/tns-core-modules/ui/core/view-base/view-base.js:431:0
18 _addView@file:///node_modules/tns-core-modules/ui/core/view-base/view-base.js:420:0
19 viewWillAppear@file:///node_modules/tns-core-modules/ui/page/page.js:81:0
20 UIApplicationMain@[native code]
21 _start@file:///node_modules/tns-core-modules/application/application.js:277:0
22 run@file:///node_modules/tns-core-modules/application/application.js:305:0
23 bootstrapNativeScriptApp@fil<…>
我在哪里做错了?请给我想法。
解决方案
我已经在我的一个应用程序中实现了versa player,这就是我的做法。
在情节提要上添加 UIView 并将类设置为 VersaPlayerView。
在您的视图控制器中将该视图的引用作为 videoView 或您想要的任何其他名称。
变量:
@IBOutlet weak var videoView: VersaPlayerView!
var playerItem: VersaPlayerItem?
加载我从 ViewDidLoad() 调用的视频函数
fileprivate func loadVideo(url: String) {
if let url = URL.init(string: url) {
playerItem = VersaPlayerItem(url: url)
videoView.set(item: playerItem)
videoView.layer.backgroundColor = UIColor.black.cgColor
}
}
推荐阅读
- java - maven 必须在 mutil 模块 maven 项目中安装(包)之前编译
- android - 将 IMME 设置为 0 后,Android 设备未找到 HM-10
- mysql - 在 MySQL 中连续查找第二大值
- linux - 无法在 gnome 上启动自定义桌面应用程序,但与 gtk-launch 一起工作正常
- python - LookupError:找不到资源停用词。请使用 NLTK 下载器获取资源
- php - 无法获取从 mysql 下载的文件位置
- python - 系列上的 .value_counts() 返回系列已经是索引
- kubernetes - 如何从 Kubernetes 主节点中删除 pod?
- django - 我试图在 django 中应用 crud,但得到了这个预期的字符串或类似字节的对象错误
- r - R - 基于 Data.table 快速二进制搜索的子集,第二个键中有多个值