无法在 videoview 中播放来自 youtube url 的视频

Unable to play video in videoview from youtube url

我想在 android VideoView 中跟随 youtube url 播放,但它不是流媒体视频

https://www.youtube.com/watch?v=h-gEwftyPCg

以下是我的代码

   VideoView videoView = (VideoView) getView().findViewById(R.id.dealVideo);
        MediaController mc = new MediaController(getContext());
        mc.setAnchorView(videoView);
        mc.setMediaPlayer(videoView);
        videoView.setVideoURI(Uri.parse("https://www.youtube.com/watch?v=h-gEwftyPCg"));
        videoView.start();

我也想支持非 YouTube 视频url

您不能直接在 VideoView 中播放 youtube link。

您需要集成 youtube 播放器。

查看此操作: https://developers.google.com/youtube/android/player/

找了半天,找到了这种实现方式。

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.about_fragment, container, false);

    String frameVideo = "<html><body><br><iframe width=\"320\" height=\"200\" src=\"https://www.youtube.com/embed/XDYbEuY8nIc\" frameborder=\"0\" allowfullscreen></iframe></body></html>";

    WebView displayYoutubeVideo = (WebView) rootView.findViewById(R.id.videoView);
    displayYoutubeVideo.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }
    });
    WebSettings webSettings = displayYoutubeVideo.getSettings();
    webSettings.setJavaScriptEnabled(true);
    displayYoutubeVideo.loadData(frameVideo, "text/html", "utf-8");
  return rootView;
    }

在layout.xml里面:

<WebView android:id="@+id/videoView"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:layout_marginTop="-45dp"
            android:layout_marginLeft="-5dp"/>

这会很好用。

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

接受许可