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) 您可以嵌入<video>
标签以通过 HTML5 播放 YouTube。对此的支持因 Android 的不同版本而异。它在 Android 4.0 及更高版本上运行良好;早期版本的 HTML5 <video>
支持有些参差不齐。因此,根据您的应用程序必须支持的 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 获取视频?