2016-02-29 105 views
1

我想知道是否可以使用AS3代码在AIR应用程序内播放YouTube视频。在AIR应用程序(AS3)中播放YouTube视频

看来,YouTube的API已被弃用...

如果有人知道的方式或一个很好的教程。

THX ----------------编辑

我试过这段代码:

var wt:uint; 
var ht:uint ; 
var webview:StageWebView ; 
var rect:Rectangle; 
var url:String; 

url = "https://www.youtube.com/watch?v=hFupHx5G44s"; 

trace(url); 

wt = this.stage.stageWidth; 
ht = this.stage.stageHeight; 

webview = new StageWebView(); 
rect = new Rectangle(0,300,wt,ht/2); 

webview.stage = this.stage; 
webview.viewPort = rect; 
webview.loadURL(url); 

但它加载的YouTube的所有页面( YouTube视频+推荐视频..),右侧有滚动条。 我只想加载视频(不是所有的YouTube网页)。

+0

显示您试过的代码无法正常工作...有人可以为您仔细检查。 –

回答

0

编辑:

我想只加载视频(不是所有的YouTube页面)。

使用该链接的格式:

url = "https://www.youtube.com/v/hFupHx5G44s"; 

例如,选择像下面的格式:
https://www.youtube.com/v/hFupHx5G44s - 使用/v/得到一个SWF版本 https://www.youtube.com/embed/hFupHx5G44s - 使用/embed/获得HTML5版本

这是一个ANDROID AIR应用程序。

你应该在问题中提到那个细节。你可以尝试添加

Security.allowDomain("www.youtube.com"); 
Security.loadPolicyFile("https://www.youtube.com/crossdomain.xml"); 


//////////# End of Edit 


为什么不使用stageWebView加载嵌入(HTML5)播放器的网页?

不推荐使用YouTube AS3 API可能意味着您无法创建自己的用户界面或使用搜索等功能。尽管可以轻松地重新创建搜索功能(将“搜索结果”源代码加载到字符串中,并通过解析源代码来提取链接)。

无论如何,我只是尝试下面的代码,它适用于AIR桌面应用程序。
也许你可以使用它作为一个起点......

package 
{ 

import flash.display.MovieClip; 
import flash.display.BitmapData; 
import flash.display.Bitmap; 
import flash.display.Sprite; 
import flash.display.Loader; 
import flash.display.LoaderInfo; 
import flash.net.URLRequest; 

import flash.events.*; 
import flash.system.*; 


public class Youtube_AIR_code extends MovieClip 
{ 
    public var YT_Loader : Loader; 
    public var my_VIDEO_ID : String = "hFupHx5G44s"; //# the YouTube ID 

    public function Youtube_AIR_code() 
    { 
     Security.loadPolicyFile("http://www.youtube.com/crossdomain.xml"); 

     YT_Loader = new Loader(); 
     YT_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, YT_Ready); 
     YT_Loader.load(new URLRequest("http://www.youtube.com/v/" + my_VIDEO_ID)); 

    } 

    function YT_Ready (e:Event) : void 
    { 
     trace("YouTube SWF :: [status] :: Loading Completed"); 

     //addChild(YT_Loader); 

     //# Wait for Youtube Player to initialise 
     YT_Loader.content.addEventListener("onReady", on_YT_PlayerLoaded); 

    } 

    private function on_YT_PlayerLoaded (e:Event) : void 
    { 
     //# Check Original Width/Height - Scale it proportionally    
     trace("YT_Loader content Width : " + YT_Loader.content.width); 
     trace("YT_Loader content Height : " + YT_Loader.content.height); 

     //# Testing changed size and position 
     YT_Loader.width = 320; YT_Loader.height = 240; 
     YT_Loader.x = 30; YT_Loader.y = 100; 

     addChild(YT_Loader); //# can add to stage only 

    } 

} //# End Public Class 

} //# End Package 
+0

完美!谢谢 ! – user5870211

+0

你知道我为什么在输出中出现这个错误吗?安全沙盒违例 – user5870211

+0

完全输出:'***安全沙箱违例*** SecurityDomain'https://s.ytimg.com/yts/swfbin/player -vflvipWo9/watch_as3.swf'试图访问不兼容的上下文'应用程序:/cine.swf' YouTube AS3 Player API将于2016年1月27日停用。请参阅https://developers.google.com/youtube/flash_api_reference 警告:域i.ytimg.com没有明确指定元策略,但策略文件https://i.ytimg.com/crossdomain.xml的内容类型是'text/x-cross-domain-policy'。应用元策略'by-content-type'。' – user5870211

相关问题