在Android媒体播放器中流式传输

时间:2013-02-10 03:53:41

标签: android android-mediaplayer media

我正在尝试开发一个Android应用来从网址流式传输视频。但我收到以下错误。

@Override
public void onClick(View v) {

    Log.d("TAG", "on Click");
    System.out.println("on Click");
    // TODO Auto-generated method stub
    if(v==play)
    {
         if( mp.isPlaying()==false && mp!=null)
         {

                  mp.start();
         }
    }
    if(v==stop)
    {
        mp.stop();
        mp.release();
        mp=null;
    }
    if(v==sd)
    {
        Log.d("TAG", "Loading the video file");
        //path="C:\\Users\\Public\\Videos\\Sample Videos\\Wildlife.wmv";
        //path="http://10.17.68.18:8080/stream";
        path = "http://www.youtube.com/watch?v=wBGIoxvEakw";

        try{

            mp=new MediaPlayer();
            mp.reset();
            mp.setDataSource(URLEncoder.encode(path,"UTF-8"));
            mp.prepareAsync();
            mp.setOnPreparedListener(new OnPreparedListener(){
                public void onPrepared(MediaPlayer mp) {
                    Log.d("TAG", "Playing the video file");
                    mp.start();
                }
            });

            //mp.start();
        }
        catch( Exception e)
        {
            System.out.println(e);
            Toast.makeText(this,e.toString(),Toast.LENGTH_LONG)
            .show();
        }
    }

}

错误日志:

02-09 20:44:11.746: W/MediaPlayer(2807): info/warning (1, 26)
02-09 20:44:11.746: E/MediaPlayer(2807): error (-4, -4)
02-09 20:44:11.777: I/MediaPlayer(2807): Info (1,26)
02-09 20:44:11.785: E/MediaPlayer(2807): Error (-4,-4)
02-09 20:49:50.815: W/KeyCharacterMap(2807): No keyboard for id 0

2 个答案:

答案 0 :(得分:0)

鉴于Youtube网址不提供媒体流,只有youtube网页。

如果您想在Android平台上播放YouTube内容,请考虑使用Youtube Android API。

https://developers.google.com/youtube/android/player/

答案 1 :(得分:0)

据我所知,setDataSource(String)会导致流式网址出现异常。它只适用于本地文件。

您应该使用setDataSource(Context,Uri)来传输网址。

相关问题