2012-02-04 15 views
21

हाय मैं एक ऐप बना रहा हूं जो livestream.com के आरटीएसपी लाइव चैनल चलाएगा। मैं निम्नलिखित के रूप में मेरे अनुप्रयोग के भीतर अभिप्राय का उपयोग करके खिलाड़ी की शुरूआत कर रहा हूँ:आरटीएसपी वीडियो प्रदर्शन के रूप में ब्राउजर के इरादे से मेरा इरादा बनाम इरादा

  iPlayer = new Intent(Intent.ACTION_VIEW); 
      //iPlayer.setType("video/*"); 
      iPlayer.setData(Uri.parse(videoUrl)); 
      startActivity(iPlayer); 

जब मीडिया प्लेयर मेरे आवेदन के माध्यम से शुरू की है, वीडियो प्रदर्शन बहुत खराब है। यह हर कुछ सेकंड बफरिंग के लिए रुक जाता है, कुछ सेकेंड के लिए खेलता है और फिर बफरिंग के लिए रुक जाता है।

दूसरी ओर, यदि मैं एंड्रॉइड ब्राउज़र में यूआरएल खोलता हूं (उदाहरण के लिए http://m.livestream.com/abcalbania) इसमें उस पृष्ठ पर एक वीडियो टैग है और वीडियो प्लेयर ट्रिगर करता है। इस बार, वीडियो बहुत चिकनी चलाता है।

कोई विचार यह क्यों हो सकता है? और यह कैसे तय किया जा सकता है?

  • मैं ब्राउज़र यूआरएल को इरादे के रूप में लॉन्च नहीं करना चाहता हूं।
  • यह एंड्रॉयड 2.3.4
+0

मैं यह सोचते कर रहा हूँ कि जब आप अपने आवेदन से आशय आग यह उपकरणों वीडियो प्लेयर –

उत्तर

0

चिकनी धारा

String videoUrl = "rtmp://mystream"; 
Intent i = new Intent(android.content.Intent.ACTION_VIEW); 
i.setDataAndType(Uri.parse(videoUrl), "video/*"); 
startActivity(i); 
0

क्यों आप अपने खुद के गतिविधि में यह नहीं खेल के लिए इस कोड का उपयोग के साथ Atmel कॉर्टेक्स ए 9 चिपसेट पर किया जाता है, गतिविधि बना सकते हैं और प्रस्तुत करना वीडियो दृश्य

निजी स्ट्रिंग पथ 2 = "आरटीएसपी: // ...";
उरी वीडियो = Uri.parse (पथ 2);

mVideoView.setVideoURI(video); 
mVideoView.setMediaController(new MediaController(this)); 
mVideoView.requestFocus(); 
mVideoView.postInvalidateDelayed(100); 
mVideoView.start(); 

इसके अलावा, आप शायद 5 सेकेंड खेल रहा शुरू होने से पहले और की तुलना में लगातार बफरिंग बफ़र तेजी से हो जाएगा कर सकते हैं। आप अपने आप से अधिक चीज नियंत्रित कर सकते हैं।

1

समस्या कोडेक्स के कारण होती है जो शायद आपके प्लेयर द्वारा समर्थित नहीं हैं।

उदाहरण के लिए मेरे पास एमपीईजी ऑडियो कोडेक के साथ H.264 वीडियो कोडेक के साथ बनाया गया एक वीडियो है।

अगर मैं अपने एप्लिकेशन के माध्यम से वीडियो लॉन्च करता हूं तो वीडियो सुचारू रूप से चलता है, लेकिन अगर मैं Ooyala Hook Player में एक वीडियो लॉन्च करता हूं तो इसका बहुत खराब प्रदर्शन होता है, यह हर 3 सेकंड में वीडियो चलाता है, कारण यह है कि स्ट्रीम एमपीईजी ऑडियो कोडेक का उपयोग करती है समर्थित एएसी ऑडियो कोडेक के बजाय।

क्या कोडेक डी वीडियो बनाने के लिए उपयोग किया जाता है, और क्या अपने खिलाड़ी द्वारा समर्थित हैं:

आप के साथ जवाब मिल जाएगा?

0

Android के MediaPlayer बहुत अच्छी तरह से संभाल RTSP - एक बाहरी एप्लिकेशन को खोलने नहीं है - यह आवश्यक है और उत्पाद के लिहाज से गलत नहीं है।

अपने प्रश्न के बारे में - ब्राउज़र वीडियो प्लेयर है कि वीडियो प्ले चिकनी मदद करने के लिए एक और मानकों को भेज सकते हैं, मैं यह जांच नहीं की है, लेकिन यह है कि तुम क्या वर्णन कर रहे हैं के लिए ही संभव विकल्प की तरह लगता है। अतिरिक्त परम के लिए उदाहरण हो वीडियो संकल्प/एन्कोडिंग/आकार .. आप उन सभी को आसानी से MediaMetaDataRetriever का उपयोग कर प्राप्त कर सकते हैं हो सकता है।

यदि आप मूल वीडियो व्यू या मीडियाप्लेयर का उपयोग नहीं करना चाहते हैं तो आप हमेशा ऐप में बाहरी प्लेयर जोड़ सकते हैं, जैसे libVLC या Vitamio

मैं Vitamio का उपयोग करने का सुझाव देते हैं, का उपयोग करें और एकीकृत करने के लिए बहुत आसान है। LibVLC यह मतलब है कि आप NDK का उपयोग कर इसे बनाने और अपनी परियोजना के लिए अपनी libs जोड़ना होगा मूल कोड में है। वैसा करने के लिए here कैसे पा सकते हैं।

-1

एंड्रॉयड वीडियो दृश्य समर्थन RTSP यूआरएल आशय अन्य application.Try करने के लिए, इस कोड के साथ बाहर पारित वीडियो को देखे जाने की घोषणा के साथ एक्सएमएल गुजरती हैं और इस गतिविधि के अंदर यह पता लगाने के लिए अच्छी तरह से कोई जरूरत नहीं।

सार्वजनिक वर्ग VideoPlayer फैली गतिविधि
{

private VideoView mVideoView;    
String videoURL=""; 
static Utility utility; 
static Context context; 
//MediaController mediaController; 
//int iCurrentpostion=0; 
int counter=0; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{   
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.tab_video_player);   
     setupViews(); 
} 
private void setupViews() 
    { 
     context=VideoPlayer.this; 
     //utility=new Utility(VideoPlayer.this); 
     showProgressDialog("Please wait", "Loading video.."); 

     //videoURL=getIntent().getExtras().getString("url");    
     mVideoView=(VideoView)findViewById(R.id.xvdvwTab); 
     // mediaController=new MediaController(context);    
     // mVideoView.setMediaController(mediaController); 



     mVideoView.setOnPreparedListener(new OnPreparedListener() 
     { 
      @Override 
      public void onPrepared(MediaPlayer mp) 
      { 

       utility.hideProgressDialog(); 

       mVideoView.start();      
       mVideoView.requestFocus(); 

      } 
     }); 

     mVideoView.setOnCompletionListener(new OnCompletionListener() 
     { 

      @Override 
      public void onCompletion(MediaPlayer mp) 
      { 
       finish(); 
      } 
     }); 


     mVideoView.setOnErrorListener(new OnErrorListener() 
     { 

     @Override 
     public boolean onError(MediaPlayer mp, int what, int extra) 
     { 
      utility.hideProgressDialog(); 
      return false; 
     } 
    }); 

     playVideoFile();  
    } 

private void playVideoFile() 
    { 

      try 
      {     
       mVideoView.setVideoURI(Uri.parse("your url")); 
      } 
      catch (Exception e) 
      { 
       utility.hideProgressDialog(); 
       if (mVideoView != null) 
       {     
        mVideoView.stopPlayback(); 
       } 
      } 
     } 
@Override 
protected void onResume() 
    { 
     /*if(mVideoView!=null) 
     { 
      //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
      mVideoView.requestFocus(); 
      if(iCurrentpostion!=0) 
       mVideoView.seekTo(iCurrentpostion); 
      mVideoView.start();   
     } 
     super.onResume();*/ 
    } 

@Override 
protected void onDestroy() 
{ 
    try 
    { 
     if (mVideoView != null) 
     {    
      mVideoView.stopPlayback(); 
      mVideoView=null;     
     } 
     super.onDestroy(); 
    } catch (Exception e) 
    {}    
} 

public void showProgressDialog(String title,String Message) 
{ 
     hideProgressDialog(); 
     progressDialog=new ProgressDialog(mActivity); 
     progressDialog.setTitle(title); 
     progressDialog.setMessage(Message);       
     if(Constant.isActivityisRunning) 
      progressDialog.show(); 

} 
public void hideProgressDialog() 
{ 
    if (progressDialog != null) 
    { 
     if (progressDialog.isShowing()) 
     { 
      progressDialog.dismiss(); 
      progressDialog = null; 
     } 
    } 
} 

}

+0

साई में खुल जाता है। इस कोड, बस किसी और मैं मिल सकता है सब कुछ की तरह, देता है "त्रुटि (100,0)"। http://stackoverflow.com/questions/25215724/rtsp-1080p-live-streaming-android-client-gets-error-100-0 –

-1

मैं बेहतर प्रदर्शन के लिए एसिंक्रोनस रूप से लगता है कि प्ले वीडियो। मेरे कोड है:

private class myAsync extends AsyncTask<Void, Integer, Void> { 
     int duration = 0; 
    //int current = 0; 
    @Override 
    protected Void doInBackground(Void... params) { 
     videoView.setOnPreparedListener(new OnPreparedListener() { 

      public void onPrepared(MediaPlayer mp) { 
       progressDialog.dismiss(); 
       videoView.seekTo(check); 
       videoView.start(); 
       duration = videoView.getDuration(); 
      } 
     }); 

     do { 


      current = videoView.getCurrentPosition(); 
      System.out.println("duration - " + duration + " current- " 
        + current); 


     } 

      if (sync.isCancelled()) 
       break; 

     } while (current != duration || current == 0); 

     return null; 
    } 

}