如何在我的Android应用程序中播放YouTube视频?

use*_*366 79 youtube video android playback

如何YouTube在我的应用程序中播放视频?我希望play video直接从YouTube流式播放,无需下载.此外,在播放视频时,我想提供菜单选项.我不想使用默认意图播放视频.我怎样才能做到这一点?

Par*_*han 59

这是btn点击事件

btnvideo.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

    startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.youtube.com/watch?v=Hxy8BZGQ5Jo")));
    Log.i("Video", "Video Playing....");

    }
}); 
Run Code Online (Sandbox Code Playgroud)

这种类型它在youtube的另一个页面中打开,您可以在其中显示您的视频

  • 问题是这样的"我不想使用默认意图播放视频." (9认同)
  • `VideoView`需要视频的绝对URL,在YouTube的情况下可能无法使用. (3认同)
  • 对于任何副本和粘贴,如果您对为什么这可能不起作用感到困惑,newIntent中应该有一个空格.新的意图 (3认同)

Nar*_*esh 15

脚步

  1. 使用菜单选项为您的播放器(全屏)屏幕创建一个新活动.在不同的线程中运行mediaplayer和UI.

  2. 对于播放媒体 - 一般来说播放音频/视频有android中的mediaplayer api.FILE_PATH是文件的路径 - 可能是url(youtube)流或本地文件路径

     MediaPlayer mp = new MediaPlayer();
        mp.setDataSource(FILE_PATH);
        mp.prepare();
        mp.start();
    
    Run Code Online (Sandbox Code Playgroud)

同时检查:Android YouTube应用Play Play Intent 已经详细讨论了这一点.

  • FILE_PATH如何指向youtube视频?youtube链接播放视频的网页,而不是指向文件本身的链接. (6认同)
  • Youtube没有任何绝对网址.这是OP最初关注的问题. (3认同)

And*_*kos 10

使用YouTube Android Player API.

activity_main.xml中:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context="com.example.andreaskonstantakos.vfy.MainActivity">

<com.google.android.youtube.player.YouTubePlayerView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="visible"
    android:layout_centerHorizontal="true"
    android:id="@+id/youtube_player"
    android:layout_alignParentTop="true" />

<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="195dp"
android:visibility="visible"
android:id="@+id/button" />


</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

MainActivity.java:

package com.example.andreaskonstantakos.vfy;


import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;



public class MainActivity extends YouTubeBaseActivity {

YouTubePlayerView youTubePlayerView;
Button button;
YouTubePlayer.OnInitializedListener onInitializedListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

     youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player);
     button = (Button) findViewById(R.id.button);


     onInitializedListener = new YouTubePlayer.OnInitializedListener(){

         @Override
         public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {

            youTubePlayer.loadVideo("Hce74cEAAaE");

             youTubePlayer.play();
     }

         @Override
         public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

         }
     };

    button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

youTubePlayerView.initialize(PlayerConfig.API_KEY,onInitializedListener);
        }
    });
}
}
Run Code Online (Sandbox Code Playgroud)

和PlayerConfig.java类:

    package com.example.andreaskonstantakos.vfy;

/**
 * Created by Andreas Konstantakos on 13/4/2017.
 */

public class PlayerConfig {

PlayerConfig(){}

public static final String API_KEY = 
"xxxxx";
}
Run Code Online (Sandbox Code Playgroud)

将"Hce74cEAAaE"替换为您的视频ID,网址https://www.youtube.com/watch?v=Hce74cEAAaE.从Console.developers.google.com获取API_KEY,并将其替换为PlayerConfig.API_KEY.有关任何进一步的信息,您可以按照以下教程一步一步:https: //www.youtube.com/watch?v = 3LiubyYpEUk


Jan*_*anB 6

我不想在设备上安装 YouTube 应用,所以我使用了本教程:

http://www.viralandroid.com/2015/09/how-to-embed-youtube-video-in-android-webview.html

...在我的应用程序中生成此代码:

WebView mWebView; 

@Override
public void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.video_webview);
    mWebView=(WebView)findViewById(R.id.videoview);

    //build your own src link with your video ID
    String videoStr = "<html><body>Promo video<br><iframe width=\"420\" height=\"315\" src=\"https://www.youtube.com/embed/47yJ2XCRLZs\" frameborder=\"0\" allowfullscreen></iframe></body></html>";

    mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;
        }
    });
    WebSettings ws = mWebView.getSettings();
    ws.setJavaScriptEnabled(true);
    mWebView.loadData(videoStr, "text/html", "utf-8");

}

//video_webview
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="0dp"
    android:layout_marginRight="0dp"
    android:background="#000000"
    android:id="@+id/bmp_programme_ll"
    android:orientation="vertical" >

   <WebView
    android:id="@+id/videoview" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />  
</LinearLayout>     
Run Code Online (Sandbox Code Playgroud)

这正是我想要的。它不会自动播放,而是我的应用程序中的视频流。值得注意的是,某些受限制的视频在嵌入时无法播放。

  • 是的,您正确地嵌入了带有 webview 的应用程序,无需 youtube api 在应用程序中加载视频的好方法,谢谢 JanB (2认同)

小智 5

您可以在这里找到Android-Youtube-Player应用程序.
在此示例应用中,YouTube视频在视频内部而非网页视图中播放.