Could't open file on client side

时光毁灭记忆、已成空白 提交于 2020-01-06 15:10:06

问题


I am trying to play a video in Android video view. but when i run the code it opens a media player but don't play the video and give me an error message and log cat shows "could't open the file at client side trying server side." here is my code:

public class ExercisesActivity extends Activity {

VideoView videoView;
String videoUrl;
public boolean flage = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_exercises);

     videoView = (VideoView)findViewById(R.id.videoView);
    new performBackgroundTask(ExercisesActivity.this).execute();
}

public void onPause ()
{
super.onPause();
videoView.stopPlayback();
}

private class performBackgroundTask extends AsyncTask < Void, Void, Void >
{


                private ProgressDialog Dialog;

                    public performBackgroundTask(ExercisesActivity context)
                    {
                        Dialog = new ProgressDialog(context);
                    }                   



            protected void onPreExecute()
               {

                this.Dialog.setMessage("Loading Video...");
                this.Dialog.show();

              }


             protected Void doInBackground(Void... params)
             {
                 try
                 {
                     String url = "http://www.youtube.com/watch?v=m5_AKjDdqaU";
                     videoUrl = getUrlVideoRTSP(url);
                     Log.e("Video url for playing=========>>>>>", videoUrl);
                 }
                 catch (Exception e)
                 {
                     Log.e("Login Soap Calling in Exception", e.toString());
                 }
                          return null;
             }


            protected void onPostExecute(Void unused)
           {


                if(!flage){

                    if(Dialog.isShowing())
                    {
                        Dialog.dismiss();
                    }


                }
                else
                {
                    videoView.setVideoURI(Uri.parse(videoUrl));
        MediaController mc = new  MediaController(ExercisesActivity.this);
                    videoView.setMediaController(mc);
                    videoView.requestFocus();
                    videoView.start();          
                    mc.show();
                }

                    if(Dialog.isShowing())
                    {
                        Dialog.dismiss();
                    }
                }

            }


public static String getUrlVideoRTSP(String urlYoutube)
    {
    try
    {
        String gdy = "http://gdata.youtube.com/feeds/api/videos/";
        DocumentBuilder  documentBuilder
       =DocumentBuilderFactory.newInstance().newDocumentBuilder();   
        String id = extractYoutubeId(urlYoutube);
        URL url = new URL(gdy + id);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        Document doc = documentBuilder.parse(connection.getInputStream());
        Element el = doc.getDocumentElement();
        NodeList list = el.getElementsByTagName("media:content");///media:content
        String cursor = urlYoutube;
        for (int i = 0; i < list.getLength(); i++)
        {
            Node node = list.item(i);
            if (node != null)
            {
                NamedNodeMap nodeMap = node.getAttributes();
                HashMap<String, String> maps = new HashMap<String, String>();
                for (int j = 0; j < nodeMap.getLength(); j++)
                {
                    Attr att = (Attr) nodeMap.item(j);
                    maps.put(att.getName(), att.getValue());
                }
                if (maps.containsKey("yt:format"))
                {
                    String f = maps.get("yt:format");
                    if (maps.containsKey("url"))
                    {
                        cursor = maps.get("url");
                    }
                    if (f.equals("1"))
                        return cursor;
                }
            }
        }
        return cursor;
    }
    catch (Exception ex)
    {
        Log.e("Get Url Video RTSP Exception======>>", ex.toString());
    }
    return urlYoutube;

}

protected static String extractYoutubeId(String url) throws MalformedURLException      

{        String id = null;
    try
    {
        String query = new URL(url).getQuery();
        if (query != null)
        {
            String[] param = query.split("&");
            for (String row : param)
            {
                String[] param1 = row.split("=");
                if (param1[0].equals("v"))
                {
                    id = param1[1];
                }
            }
        }
        else
        {
            if (url.contains("embed"))
            {
                id = url.substring(url.lastIndexOf("/") + 1);
            }
        }
    }
    catch (Exception ex)
    {
        Log.e("Exception", ex.toString());
    }
    return id;
    }

}

The log cat shows:

01-07 20:36:40.388: E/Video url for playing=========>>>>>(378):
rtsp://r4---sn-4g57kue6.c.youtube.com/CiILENy73wIaGQmlqd0wKsCfmxMYDSANFEgGUgZ2aWRlb3MM

/0/0/0/video.3gp
01-07 20:36:40.398: D/MediaPlayer(378): Couldn't open file on client side, trying
server side

回答1:


The RTSP link is not working for any data provided by Youtube API v 2.0. And I don't think its going to be fixed. https://code.google.com/p/gdata-issues/issues/detail?id=4858



来源:https://stackoverflow.com/questions/20976238/couldt-open-file-on-client-side

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!