使用AS3 Adob​​e AIR加载YouTube视频

时间:2019-03-22 17:50:38

标签: javascript actionscript-3 youtube air

众所周知,ActionScript的YouTube API已停产。因此,我寻找了在Adobe AIR应用程序中运行Youtube视频的替代方法。

我测试了这些代码。下面是每个人发生的事情。

1°代码:

var hl:HTMLLoader = new HTMLLoader();
hl.width = 500;
hl.height = 300;
hl.addEventListener(Event.COMPLETE, complete); //event is dispatched, but with js errors
hl.load(new URLRequest("http://www.youtube.com/embed/XXXXX"));

结果:发生错误“ Object.freeze不是函数”

2°代码:

var webView:StageWebView = new StageWebView();
webView.viewPort = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
webView.stage = stage;
webView.addEventListener(Event.COMPLETE, complete); //event is dispatched, but with js errors
webView.loadURL("http://www.youtube.com/embed/XXXXX");

结果::发生相同的错误“ Object.freeze不是函数”。

3°代码:

// changed 'useNative' param to true for StageWebView
var webView:StageWebView = new StageWebView(true);
// the same code of 2° Code

结果::没有错误,但是页面无法完全加载且视频无法播放。

4°代码:

// I've changed loadURL to loadString, for both methods...
var stringPage:String = '<html><head></head><body><iframe width="640" height="360" src="http://youtube.com/embed/XXXXXX" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></body></html>';
webView.loadString(stringPage);
// or
hl.loadString(stringPage);

结果::出现一个黑色矩形,但视频无法加载。

5°代码:

// I've tried use the AS3 API URL:
hl.load(new URLRequest("http://www.youtube.com/v/XXXXXX"));
// or
webView.loadURL("http://www.youtube.com/v/XXXXXX");

结果:出现一条消息“不再支持嵌入Flash的视频”,并且视频无法播放。

“陌生事物”:

// the Youtube Page Video works!
webView.loadURL("http://www.youtube.com/watch?v=XXXXXX");
// or
hl.load(new URLResquest("http://www.youtube.com/watch?v=XXXXXX"));

问题是:有人知道在2019年如何使用ActionScript 3.0加载YouTube视频吗?

1 个答案:

答案 0 :(得分:0)

尝试基本的嵌入(无autoplayallowAccelorometer等):

也不要将"'混合使用,而只是在需要的地方取消转义"引号。
例如:width=\"640\"给出字符串width="640"

如此:

'<html><head></head><body><iframe width="640" ... '; 

//should be written as...
"<html><head></head><body><iframe width=\"640\" ... "; 

代码4:(未经测试)

// I've changed loadURL to loadString, for both methods...
var stringPage:String = "<html><head></head><body><iframe width=\"640\" height=\"360\" src=\"http://youtube.com/embed/XXXXXX\" frameborder=\"0\" </iframe></body></html>";
webView.loadString(stringPage);
// or
hl.loadString(stringPage);

我希望能解决这个问题并提供正确的Youtube加载细节。

PS:
另一个选择是仅从Youtube服务器访问直接MP4(跳过Youtube播放器嵌入)。

让我知道您是否对直接链接感兴趣(您必须制作自己的AS3播放器控件)。