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

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

【问题讨论】:

标签: c# android xml xamarin


【解决方案1】:

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

    string html=@"<html><body><iframe width=""200"" height=""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。

    StackOverflow 上有几个关于使用 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】:

      【讨论】:

      • 不,谢谢 - 这非常令人困惑,并且不适用于模拟器 :-)
      【解决方案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);
        

        【讨论】:

          猜你喜欢
          • 2011-11-10
          • 2020-01-11
          • 2013-01-16
          • 1970-01-01
          • 1970-01-01
          • 2018-05-26
          • 2015-05-21
          • 2014-06-18
          • 1970-01-01
          相关资源
          最近更新 更多