XAMARIN - 从 youtube 添加视频

Posted

技术标签:

【中文标题】XAMARIN - 从 youtube 添加视频【英文标题】:XAMARIN - add video from youtube 【发布时间】:2014-04-06 17:36:42 【问题描述】:

我搜索有关如何从 youtube 添加视频的信息,例如: 我想从一些 youtube 链接添加视频。 我认为它应该在 webview 中,但我需要一些细节,因为我找不到任何关于我的问题的信息。

【问题讨论】:

***.com/questions/17681458/… 谢谢,但我如何才能在我的活动中实施? 抱歉,没有意识到这是安卓系统。但方法应该非常相似 【参考方案1】:

您可以使用 webview 播放 youtube 视频。

    string html=@"<html><body><iframe 200"" 400"" src=""strUrl""></iframe></body></html>"; 
            var myWebView = ( WebView ) FindViewById ( Resource.Id.myWebView );  
            var settings=myWebView.Settings; 
            settings.javascriptEnabled=true;
            settings.UseWideViewPort=true;  
            settings.LoadWithOverviewMode=true;
            settings.JavaScriptCanOpenWindowsAutomatically=true; 
            settings.DomStorageEnabled=true;
            settings.SetRenderPriority(WebSettings.RenderPriority.High); 
            settings.BuiltInZoomControls = false; 
            settings.JavaScriptCanOpenWindowsAutomatically=true;
            myWebView.SetWebChromeClient(new WebChromeClient());
            settings.AllowFileAccess = true;
            settings.SetPluginState(WebSettings.PluginState.On);  

            myWebView.LoadDataWithBaseURL(null,html,"text/html","UTF-8",null); 

在清单文件中添加互联网权限并启用 hardwareAccelerated="true"。关注我的博客文章了解更多详情:http://appliedcodelog.blogspot.in/2015/09/how-to-play-youtube-video-using-webview.html

【讨论】:

【参考方案2】:

更新:以下所有内容仍然正确,但 official YouTube API for android 现已可用。

到目前为止,在 Android 上播放 YouTube 视频的最简单方法是简单地触发 Intent 以启动原生 Android YouTube 应用。当然,如果您使用的不是经过认证的 Google 设备,并且没有 Google 应用程序的补充,这将失败。 (Kindle Fire 可能是这种设备的最大例子)。这种方法的问题是,当视频结束时,用户不会自动回到你的应用程序;他们必须按返回按钮,此时您可能已经丢失了他们。

作为第二种选择,您可以使用 MediaPlayer API 播放 YouTube 视频。但这种方法有三个注意事项:

1) 您需要调用 YouTube 的 GData 网络服务 API,将视频的 ID 传递给它。您将获得大量元数据,以及您应该传递给 MediaPlayer 以播放 H.264 编码流的 RTSP URL。这可能是您尝试使用 MediaPlayer 失败的原因;您可能没有使用正确的 URL 进行流式传输。

2) GData/MediaPlayer 方法只会播放低分辨率内容(176x144 或类似)。这是 YouTube 为防止内容被盗而深思熟虑的决定。当然,这并不能提供非常令人满意的体验。有后门黑客可以获取更高分辨率的流,但并非所有 Android 版本都支持它们,使用它们违反了 YouTube 的服务条款。

3) RTSP 流可能会被某些内部网络/防火墙阻止,因此这种方法可能不适用于所有用户。

第三个选项是在你的应用程序中嵌入一个 WebView。您可以在这里采取两种方法:

1) 您可以嵌入 Flash 对象并运行适用于 YouTube 的标准桌面 Flash 播放器。您甚至可以使用 Javascript API 来控制播放器,并将事件传递回原生 Android 应用程序。这种方法效果很好,但不幸的是,Flash 在 Android 平台上已被弃用,并且不适用于 Android 4.1 及更高版本。

2) 您可以嵌入&lt;video&gt; 标签以通过 HTML5 播放 YouTube。对此的支持因 Android 的不同版本而异。它在 Android 4.0 及更高版本上运行良好;早期版本的 HTML5 &lt;video&gt; 支持有些参差不齐。因此,根据您的应用程序必须支持的 Android 版本,您可以采用混合方法,在 Android 4.x 或更高版本上嵌入 HTML5,在所有早期版本的 Android 上嵌入 Flash。

*** 上有几个关于使用 HTML5 播放 YouTube 视频的主题;它们都没有真正描述您必须在一个地方遵循的整个过程。以下是其中一些的链接:

Android - How to play Youtube video in WebView?

How to embed a YouTube clip in a WebView on Android

Play Youtube HTML5 embedded Video in Android WebView

在接下来的几周/几个月内,所有这一切都会变得更加容易;在 Google I/O 2012 上,他们展示/演示了一个新的 Android 的 YouTube API,它将支持在您的应用程序中直接嵌入 YouTube 内容,并完全支持 Android 2.2(截至撰写本文时,大约 95% 的 Android 用户群)。它的到达速度不够快。

感谢@mportuesisf 的精彩回答。

【讨论】:

【参考方案3】:

这里有一些链接。 http://docs.xamarin.com/recipes/android/media/video/play_video/ Streaming Youtube Videos

【讨论】:

不,谢谢 - 这非常令人困惑,并且不适用于模拟器 :-)【参考方案4】:

对于 xamarin 表单,您可以使用 HtmlWebViewSource 在我的虚拟机中:

public HtmlWebViewSource VideoSource  get; set; 

在构造函数中:

 VideoSource = new HtmlWebViewSource();
            VideoSource.Html = @"<html><body>  <div style=' position: relative; padding-bottom: 56.25%; padding-top: 25px;'> <iframe style='position: absolute; top: 0; left: 0; width: 100%; height: 100%;'  src='https://www.youtube.com/embed/bVdfj7HXuXE' frameborder='0' allowfullscreen></iframe></div> </body></html>";

在我看来:

 <WebView VerticalOptions="Fill"
                 HorizontalOptions="Fill"
                 Source="Binding VideoSource"
            />

【讨论】:

【参考方案5】:

首先您必须在点击分享时复制视频 youtube 上方的链接,然后选择集成并选择 youtube 视频的 src

然后在你的 c sharp 中创建:

你会在网络视图中看到视频

WebView webview = FindViewById<WebView>(Resource.Id.webView1);
        video =("the src of the youtube video");
        var uri = Android.Net.Uri.Parse(video);
        WebSettings settings = webview.Settings;
        settings.JavaScriptEnabled = true;
        webview.SetWebChromeClient(new WebChromeClient());
        webview.LoadUrl(video);

【讨论】:

以上是关于XAMARIN - 从 youtube 添加视频的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xamarin.Forms/C# 将 mp3 从 youtube 下载到 android?

如何使用适用于 Android 和 iOS 的 Xamarin 表单在特定频道上的 youtube 上上传视频?

YouTube API:如何使用标签 Y 从频道 X 获取视频?

在Xamarin.Forms应用程序中离开页面后,Webview不会关闭

YouTube 和 FancyBox 视频功能

从 Xamarin 中的代码推送新页面后如何旋转屏幕