zoukankan      html  css  js  c++  java
  • 在ANDROID程式中播放youtube视频

    1.使用VedioView

      VideoView videoView = (VideoView)findViewById(R.id.video);
    
      String src = "rtsp://v6.cache7.c.youtube.com/CjYLENy73wIaLQlSNwWysTZuKRMYESARFEIJbXYtZ29vZ2xlSARSBXdhdGNoYP6mvvezrYeZTgw=/0/0/0/video.3gp";
      videoView.setVideoURI(Uri.parse(src));
      videoView.setMediaController(new MediaController(this));
      videoView.requestFocus();
      videoView.start();

       使用VedioView可以播放本地视频文件,使用setVideoPath
       如果播放网络视频的话,据传说上面的方法可以。
       哥不相信传说,哥只相信干出来的效果。于是实际测试,没有办法播放!
       于是到网上爬文,得知一般的视频播放是先加载完再播放,而RTSP格式的数据流,是边加载边播放。
       如何得到youtube视频的rtsp链接呢?
       参考网址:http://stackoverflow.com/questions/7937903/get-rtsp-url-from-youtube
       不过先要有youtube的帐号才可以,可以随便用一个邮箱登录。
       这样得到视频rtsp后,替换到程式中。
       失败!!提示,无法播放此视频!!!
       是什么原因?不清楚。是不是字符串中的字符解析出了问题呢?
       找了很久不知道原因,暂时放弃这个解决方案。
       另外,使用MediaPlayer也可以播放视频文件,videoview是调用MediaPlayer实现视频播放的。
       这个方案以后有时间再研究,因为想到另外一个更加简便的解决方案。
    2. 使用WebView
       android中可以利用WebView来打开网页,而youtube提供视频嵌入代码,允许用户在自己的网页嵌入。
        这样的话,如果用WebView来打开html格式嵌入的视频,是不是可以直接播放视频呢?
        马上开始实验,一般WebView都是直接load一个url,那先调查下使用WebView可否直接加载html,实验结果,loadData可以满足要求。
        于是有了下面的代码

    browser = (WebView) findViewById(R.id.webview);
       browser.requestFocus();
       browser.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
       WebSettings setting = browser.getSettings();
       setting.setJavaScriptEnabled(true);
       setting.setSupportZoom(true);
       setting.setBuiltInZoomControls(true);
       setting.setAllowFileAccess(true);
       setting.setJavaScriptCanOpenWindowsAutomatically(true);
       setting.setAppCachePath("/data/data/" + getPackageName() + "/app_path/");
       setting.setAppCacheEnabled(true);
       setting.setUserAgent(0);
       setting.setLoadsImagesAutomatically(true);
       setting.setSavePassword(true);
       setting.setLightTouchEnabled(true);
       setting.setPluginsEnabled(true);
       setting.setPluginState(PluginState.ON);
       setting.setUserAgentString("Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; zh-tw) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16");
        
       browser.setWebViewClient(new WebViewClient());
    
       html = "<html><body>hello,hello!" +
           "<iframe width=\"1120\" height=\"630\" src=\"http://www.youtube.com/embed/XseHQvZw1vA?autoplay=1\" frameborder=\"0\" allowfullscreen></iframe>" +
         "</body></html>";
       html = html.replace("?", "%3f");
       browser.loadData(html, "text/html", "utf-8");

        如何取得youtube视频的嵌入代码,可以参考youtube的官方网站介绍:
       http://support.google.com/youtube/bin/answer.py?hl=zh-Hans&answer=171780
        上面的代码中还设置了视频可以自动播放。
        视频的其他属性的设定可以参考google开发的官方网页:
       https://developers.google.com/youtube/player_parameters#enablejsapi
        另外,关于特殊字符的替代,可以使html正确加载。
        参考:http://stackoverflow.com/questions/7125976/android-use-webview-with-loaddata
        在代码中加入:

    html = html.replace("%", "%25");
    html = html.replace("#", "%23");
    html = html.replace("\\", "%27");
    html = html.replace("?", "%3f");
  • 相关阅读:
    二进制位运算
    Leetcode 373. Find K Pairs with Smallest Sums
    priority_queue的用法
    Leetcode 110. Balanced Binary Tree
    Leetcode 104. Maximum Depth of Binary Tree
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 64. Minimum Path Sum
    Leetcode 63. Unique Paths II
    经典的递归练习
    案例:java中的基本排序
  • 原文地址:https://www.cnblogs.com/sipher/p/2590032.html
Copyright © 2011-2022 走看看