2016-02-29 132 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

相關問題