【发布时间】:2019-06-28 23:09:44
【问题描述】:
更新:从下面@Manoj 的代码和其他一些来源,我现在能够将 youtube 播放器加载到基于 Youtube iframe api 的 webview 中。但问题仍然是:如何让我的应用程序识别视频本身何时开始播放? (视频加载后,以及任何广告播放后)。
关键代码被“困”在webview中。
有一个 nativescript-webview 接口插件,旨在让您从 webview 获取信息。如果这是这里所需要的,那么在视频本身开始播放时注册该插件的正确代码是什么?
该插件的 repo 中的示例似乎非常具体,并且与我在这里想到的不同。
原问题:
我有一个使用 iOS 和 Angular 的 Nativescript 应用程序。我想在应用程序中播放 youtube 视频,并且我希望能够控制播放。所以我想做一些事情,比如以编程方式自动播放它并在视频实际播放时注册。
我该怎么做?
更多详情:
有一个 nativescript-youtubeplayer 插件,但我不能在这里使用它,因为它需要一个 api 密钥和其他一些原因。
我可以将基本 iframe 嵌入到 WebView 中,代码如下:
<WebView (loaded)="onWebViewLoaded($event)" requiresUserActionForMediaPlayback="false" [src]="urlSource"></WebView>
在ts中:
public urlSource= '<iframe src="https://www.youtube.com/embed/ZwO3PG-c5Cs?playsinline=1&autoplay=1&fs=0&controls=1&enablejsapi=1"></iframe>'
这会加载视频。但它没有正常的 youtube 控件(比如视频上没有大的暂停按钮)——也许它被 webview 覆盖了。更重要的是,它不会自动播放,而且它没有给我一种以编程方式访问 iframe 信息的方法——例如,我不知道何时视频实际播放与暂停时的对比。
Youtube Iframe Player API 就是为此目的而设计的,但是如何将它与 Nativescript 一起使用呢?它似乎需要以我以前从未见过 Nativescript 的方式进行 dom 操作。
例如,基本代码是:
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'M7lc1UVf-VE',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
但是,不出所料,这会引发错误,例如“找不到名称 YT”。
那么,我如何使用 iframe 在 Nativescript 中嵌入 youtube 视频并像我有一个 Web 应用程序一样控制它?
【问题讨论】:
-
你发现了吗?
-
请参阅下面发布的我的答案。我能够让它主要与那里的代码一起工作。我说“主要是”是因为那是不久前的事了,在将其投入生产之前我转向了其他项目(我记得,它基本上是功能性的)。也可能有比我提供的代码更好的与 web 视图交互的方式——但这应该足以让人们开始。
-
在我根据您的代码进行更改之前 - 您还记得自动播放是否在那里工作吗?因为这是我的主要问题......
-
我不能肯定地说,因为那是不久前,但我记得自动播放是通过将 autoplay 参数设置为 true 来工作的。
标签: nativescript