嵌入Youtube视频到WebView(Appcelerator)不显示(黑屏)

时间:2016-01-20 15:54:10

标签: android video webview youtube appcelerator

我尝试在我的应用程序(Appcelerator,Android)中显示YT视频。我发现最好的方法是在WebView中显示嵌入的视频,所以我使用这样的代码来实现:

var webView = Ti.UI.createWebView({
   url: 'https://www.youtube.com/embed/LTRfmqc0KBg',
   enableZoomControls: false,
   scalesPageToFit: true,
   scrollsToTop: false,
   showScrollbars: false
});

但视频无法加载(我只看到黑屏 - 而不是webview'白色)。 WebView正常工作,因为它显示其他页面。

3 个答案:

答案 0 :(得分:2)

然后你可以试试这个

var Win = Titanium.UI.createWindow({
    title : 'Video View Demo',
    backgroundColor : '#fff'
});
var video_url = 'https://www.youtube.com/watch?v=bSiDLCf5u3s';
var movie = '<html><head></head><body style="margin:0"><embed id="yt" src="' + video_url + '" type="application/x-shockwave-flash" width="480" height="266"></embed></body></html>';


var webView = Ti.UI.createWebView({
    top:0,
    left:0,
    width:480,
    height:266,
    url:video_url,
    html:movie
});

Win.add(webView);
Win.open();

答案 1 :(得分:0)

您可以调用设备默认的youtube应用来打开用户的网址。请参阅以下代码

var Win = Titanium.UI.createWindow({
    title : 'Youtube Video View Demo',
    backgroundColor : '#fff'
});
var button = Titanium.UI.createButton({
   title: 'Hello',
   top: 10,
   width: 100,
   height: 50
});
button.addEventListener('click',function(e)
{
   Titanium.Platform.openURL('https://www.youtube.com/watch?v=bSiDLCf5u3s');
});
Win.add(button);
Win.open();

感谢。

答案 2 :(得分:0)

我发现嵌入式视频无法在Android上运行,而在iOS上运行正常。 但是,使用webviews url属性切换表单以加载视频,使用setHtml()函数工作。这样做的方法是使用Youtube iframe api。

var videoUrl = 'https://www.youtube.com/embed/' + videoId + '?    autoplay=1&autohide=1&cc_load_policy=0&color=white&controls=0&fs=0&iv_load_policy=3&modestbranding=1&rel=0&showinfo=0';
var playerWidth = $.youtubeWebView.width;
var playerHeight = $.youtubeWebView.height;
var html = '<iframe id="player" type="text/html" width="'+playerWidth+'" height="'+playerHeight+'" src="'+videoUrl+'" frameborder="0"></iframe>';
$.youtubeWebView.setHtml(html);

抬头,iframe可能会很痛苦,在加载事件中添加它以摆脱顶部和底部的白色衬垫。左侧

<强> this.evalJS( 'document.getElementsByTagName( “正文”)[0] .style.margin = 0;');

这样的事情:

$.youtubeWebView.addEventListener('load', function(){
    this.evalJS('document.getElementsByTagName("body")[0].style.margin=0;');
    var showYoutubeTimer = setTimeout(function() {
        $.activityIndicator.hide();
    $.youtubeWebView.opacity = 1;
    clearTimeout(showYoutubeTimer);
    }, 300);
});