2016-01-20 164 views
-1

我尝试在我的应用程序(Appcelerator,Android)中显示YT视频。我发现,最好的办法是显示的WebView嵌入式视频,所以我有这样的代码做到这一点:嵌入Youtube视频到WebView(Appcelerator)不显示(黑屏)

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

但视频没有加载(我只看到黑色画面 - 代替的WebView白色)。 WebView正常工作,因为它显示其他页面。

+0

嗨!你有没有找到这个答案? –

回答

0

我们发现了这种方法的一些问题,并最终放弃了它。我们回到使用Appcelerator原生的视频播放器。

我想你可能会发现你使用的URL不正确。尽管您自己查看视频时会使用此功能,但不适合嵌入到应用程序中。

我们最终使用Youtube API获取嵌入到Youtube中的视频的原始URL。最终我们放弃了这一点,因为我们不希望YouTube上的广告内容粘贴在顶部。

+0

那么你的回答是什么,因为你给我写了一些建议,最后你说他们都是错的...... – kreatywny

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(); 

谢谢。

+0

谢谢谢里夫,但它在浏览器/ YT应用程序中打开视频。我想在应用程序内部显示视频,而不是在外面... – kreatywny

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(); 
+0

这适用于iOS平台。 – Wikki

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); 

抬起头,I帧可以是一个痛苦,在负载情况下添加此获得在顶部&左侧摆脱了奇怪的白色填充

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); 
});