1

我正在尝试获取 youtube 播放列表并在 IOS 上播放视频。我的应用在 Android 和 Flex 模拟器上运行良好,但在 IOS 上无法运行。看起来这里在 IOS 中加载 swfs 有限制。

我为此目的使用as3-youtube-data-api。任何人都可以指导我如何在 IOS 上使用 as3 (Flash Builder 4.5) 嵌入或播放 youtube 视频,或者有其他可用的方法吗?

注意:应用商店中有“思科技术支持”应用,可以播放应用中嵌入的 youtube 视频。

更新VideoDisplay 可以工作,因为我的播放列表没有 mp4?

更多更新

这就是至少 m 能够在 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+"");
}
4

1 回答 1

0

正如您在提供的链接中所指出的那样,您无法在 iOS 上运行 actionscript swfs。用不了多久,Android 上也没有任何方法可以做到这一点。VideoDisplay 也不起作用,因为它是动作脚本。

要在 iOS 上播放 Youtube 视频,您可以使用(就像您提到的应用程序和 iOS 上其他基于 youtube 的应用程序一样)原生 Objective-C 库,它将完全支持获取播放列表和播放视频;或者也可以尝试在 webapp 中使用 javascript 客户端。

于 2013-06-25T16:56:01.870 回答