我正在尝试获取youtube播放列表并在IOS上播放视频。我的应用程序在Android和Flex模拟器上运行良好,但在IOS上不起作用。看起来在IOS中加载swfs有一个限制。
我使用的是as3 youtube数据api。有人能指导我如何在IOS上使用as3(Flash Builder 4.5)嵌入或播放youtube视频吗?或者有其他可用的方法吗?
注意:应用商店中有"思科技术支持"应用程序,它可以播放嵌入应用程序中的youtube视频。
更新VideoDisplay可以工作吗,因为我的播放列表没有mp4?
更多更新
这就是为什么至少我能够在IOS上播放youtube视频(阅读本文),但android又给了我一个黑屏。我能用这种方法做些什么吗?请提出你的建议。感谢
var webView:StageWebView;
public function init():void
{
NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
webView = new StageWebView();
webView.viewPort = new Rectangle( 0, 35, this.stage.stageWidth, this.stage.stageHeight);
webView.stage = this.stage;
var htmlString:String = "<!DOCTYPE HTML>" +
"<html><body><script>" +
"var tag = document.createElement('script');"+
"tag.src = "http://www.youtube.com/player_api";"+
"var firstScriptTag = document.getElementsByTagName('script')[0];"+
"firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);"+
"var player;"+
"function onYouTubeIframeAPIReady() {"+
"player = new YT.Player('player', {"+
"events: {"+
"'onReady': onPlayerReady,"+
"'onStateChange': onPlayerStateChange"+
"}"+
"});"+
"}"+
"function onPlayerReady(event) {"+
"event.target.playVideo();"+
"}"+
"var done = false;"+
"function onPlayerStateChange(event) {"+
"if (event.data == YT.PlayerState.PLAYING && !done) {"+
"setTimeout(stopVideo, 6000);"+
"done = true;"+
"}"+
"}"+
"function stopVideo() {"+
"player.stopVideo();"+
"}"+
"</script>"+
"<iframe id="player" type="text/html" width="100%" height="400" src="http://www.youtube.com/embed/g-YW2jkd-Ac" frameborder="0"></iframe>" +
"</body></html>";
webView.loadString( htmlString );
//webView.loadURL("http://www.youtube.com/embed/M7lc1UVf-VE");
}
public function dispose():void {
try {
webView.stage=null;
} catch (e:Error) { trace("error")}
}
使用Capabilities.os
,我可以识别操作系统,并通过IOS和android进行操作。
同样,我们无法在IOS中调用javascript,因此我无法停止视频。
更新
这就是我为IOS所做的。它提供内置的玩家控制
public function initIOS():void
{
NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
webView = new StageWebView();
webView.viewPort = new Rectangle( 0, 40, this.stage.stageWidth, this.stage.stageHeight-40);
webView.stage = this.stage;
webView.loadURL("http://www.youtube.com/embed/"+data.videoId+"");
}
正如您在提供的链接中所指出的,您无法在iOS上运行actionscript swfs。用不了多久,在安卓系统上也不会有任何方法做到这一点。VideoDisplay也不起作用,因为它是动作脚本。
要在iOS上播放Youtube视频,您可以使用(正如您提到的应用程序和iOS上其他基于Youtube的应用程序所做的那样)原生Objective-C库,该库将完全支持获取播放列表和播放视频;或者也可以尝试在web应用程序中使用javascript客户端。