2014-01-07 166 views
0

我想在Android視頻視圖中播放視頻。但是當我運行代碼時,它會打開一個媒體播放器,但不播放視頻並給我一個錯誤消息並記錄貓顯示「無法在客戶端嘗試在服務器端打開文件。」這裏是我的代碼:無法在客戶端打開文件

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; 
    } 

} 

日誌貓顯示:

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 
+0

你的URL在日誌中看起來很奇怪。這是故意的嗎? –

+0

我認爲getUrlVideoRTSP()函數存在問題。我認爲它不正確解析它... – Undertaker

回答

相關問題