Android 使用eclipse的mediaplayer播放YouTube视频

Android 使用eclipse的mediaplayer播放YouTube视频,android,eclipse,video,youtube,Android,Eclipse,Video,Youtube,eclipse中有许多控件可以播放youtube视频,如WebView、YouTubePlayerView、VideoView等 我的疑问是我们能用媒体播放器播放吗?发现,具有扩展名(如.mp4)的url可以使用媒体播放器播放。但当尝试使用youtube视频url时,它会显示一个错误开始,状态为0 请帮助验证另一个工作代码 MainActivity.java @Override protected void onCreate(Bundle savedInstanceState) { super.

eclipse中有许多控件可以播放youtube视频,如WebView、YouTubePlayerView、VideoView等

我的疑问是我们能用媒体播放器播放吗?发现,具有扩展名(如.mp4)的url可以使用媒体播放器播放。但当尝试使用youtube视频url时,它会显示一个错误开始,状态为0


请帮助验证另一个工作代码

MainActivity.java

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

VideoView videoView =(VideoView)findViewById(R.id.videoView);
MediaController mediaController= new MediaController(this);
mediaController.setAnchorView(videoView);
Uri uri=Uri.parse("rtsp://r2---sn-a5m7zu76.c.youtube.com/
Ck0LENy73wIaRAnTmlo5oUgpQhMYESARFEgGUg5yZWNvbW1lbmRhdGlvbnIhAWL2kyn64K6aQtkZVJdTxRoO88HsQjpE1a8d1GxQnGDmDA==/0/0/0/video.3gp");
videoView.setMediaController(mediaController);
videoView.setVideoURI(uri);
videoView.requestFocus();

videoView.start();}
activity_video_view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"


android:layout_height="fill_parent">
   <VideoView android:id="@+id/videoView"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"/>
</LinearLayout>
你试过这个吗

btnPlay.setOnClickListener(new OnClickListener() {public void onClick(View v) {
startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("https://www.youtube.com/watch?v=jHHn52KhBkQ")));
}}});
在这个解决方案中,您可以直接将youtube视频url传递给我们希望在media player中播放的目的

要播放视频,请尝试此链接


使用您的视频url而不是他们的3gp视频url。

您可以使用媒体播放器轻松播放视频,如下所示。 Player.java文件

        public class Player extends Activity implements SurfaceHolder.Callback,
                    OnPreparedListener {
                private MediaPlayer mediaPlayer;
                private SurfaceHolder vidHolder;
                private SurfaceView vidSurface;
                String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4";
                String videoSrc = "http://bffmedia.com/bigbunny.mp4";
                String videoToPlay = "rtsp://v6.cache1.c.youtube.com/CjYLENy73wIaLQkDsLHya4-Z9hMYDSANFEIJbXYtZ29vZ2xlSARSBXdhdGNoYKX4k4uBjbOiUQw=/0/0/0/video.3gp";

                @Override
                protected void onCreate(Bundle savedInstanceState) {
                    // TODO Auto-generated method stub
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.mediaplayer);
                    vidSurface = (SurfaceView) findViewById(R.id.surfView);
                    vidHolder = vidSurface.getHolder();
                    vidHolder.addCallback(this);

                }

                @Override
                public void onPrepared(MediaPlayer mp) {
                    // TODO Auto-generated method stub
                    mediaPlayer.start();
                }

                @Override
                public void surfaceCreated(SurfaceHolder holder) {
                    // TODO Auto-generated method stub
                    try {
                        mediaPlayer = new MediaPlayer();
                        mediaPlayer.setDisplay(vidHolder);
                        mediaPlayer.setDataSource(videoToPlay);
                        mediaPlayer.prepare();
                        mediaPlayer.setOnPreparedListener(this);
                        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                }

                @Override
                public void surfaceChanged(SurfaceHolder holder, int format, int width,
                        int height) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void surfaceDestroyed(SurfaceHolder holder) {
                    // TODO Auto-generated method stub

                }

            } 

       //mediaplayer.xml file



            <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#000000"
                android:paddingBottom="10dp" >

                <SurfaceView
                    android:id="@+id/surfView"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent" />

            </RelativeLayout>

//finally add internet permission in manifest.xml file
    <uses-permission android:name="android.permission.INTERNET" />

把你的代码贴在这里,这样别人就能帮助你。我已经试过了。两人都在工作。但我需要知道我们能用媒体播放器实现它吗。这是我的问题。我在问有关youtube视频url的问题。不是关于.mp4或.3gp文件。
        public class Player extends Activity implements SurfaceHolder.Callback,
                    OnPreparedListener {
                private MediaPlayer mediaPlayer;
                private SurfaceHolder vidHolder;
                private SurfaceView vidSurface;
                String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4";
                String videoSrc = "http://bffmedia.com/bigbunny.mp4";
                String videoToPlay = "rtsp://v6.cache1.c.youtube.com/CjYLENy73wIaLQkDsLHya4-Z9hMYDSANFEIJbXYtZ29vZ2xlSARSBXdhdGNoYKX4k4uBjbOiUQw=/0/0/0/video.3gp";

                @Override
                protected void onCreate(Bundle savedInstanceState) {
                    // TODO Auto-generated method stub
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.mediaplayer);
                    vidSurface = (SurfaceView) findViewById(R.id.surfView);
                    vidHolder = vidSurface.getHolder();
                    vidHolder.addCallback(this);

                }

                @Override
                public void onPrepared(MediaPlayer mp) {
                    // TODO Auto-generated method stub
                    mediaPlayer.start();
                }

                @Override
                public void surfaceCreated(SurfaceHolder holder) {
                    // TODO Auto-generated method stub
                    try {
                        mediaPlayer = new MediaPlayer();
                        mediaPlayer.setDisplay(vidHolder);
                        mediaPlayer.setDataSource(videoToPlay);
                        mediaPlayer.prepare();
                        mediaPlayer.setOnPreparedListener(this);
                        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                }

                @Override
                public void surfaceChanged(SurfaceHolder holder, int format, int width,
                        int height) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void surfaceDestroyed(SurfaceHolder holder) {
                    // TODO Auto-generated method stub

                }

            } 

       //mediaplayer.xml file



            <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#000000"
                android:paddingBottom="10dp" >

                <SurfaceView
                    android:id="@+id/surfView"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent" />

            </RelativeLayout>

//finally add internet permission in manifest.xml file
    <uses-permission android:name="android.permission.INTERNET" />