2016-08-08 13 views
9

के बाद स्ट्रीमिंग मैं में this URL से लाइव स्ट्रीम खेल रहा हूँ रोक एंड्रॉयडएंड्रॉयड VideoView विशिष्ट समय

अब तक, मैं, समस्या वीडियो 23 सेकंड के बाद वास्तव में बंद कर दिया था videoView में वीडियो खेलने में कामयाब रहे, तो मेरे पास है वीडियो को फिर से शुरू करने के लिए videoview विधि setOnCompletionListener (...) का उपयोग किया जाता है, हालांकि, यह दर्शक के लिए खराब अनुभव प्रदान करता है, क्योंकि यह हर 23 सेकंड को रोकता है और फिर से शुरू होता है, कई फ्रेम भी याद करता है।

तो मेरे सवाल "कैसे वर्तमान बफ़र वीडियो खेलते समय videoView बफर वीडियो के अगले भाग बनाने के लिए है।

यहाँ, अगर जाँच मेरी कोड

public class TvActivity extends Activity { 

    // Declare variables 
    ProgressDialog pDialog; 
    VideoView videoview; 


    // Insert your Video URL 
    String VideoURL = ""; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Get the layout from video_main.xml 
     setContentView(R.layout.videoview_main); 
     // Find your VideoView in your video_main.xml layout 
     videoview = (VideoView) findViewById(R.id.VideoView); 
     // Execute StreamVideo AsyncTask 
     VideoURL = "http://ns3622101.ip-149-202-201.eu:8000/live/fr443500/75019pa/286.ts"; 

     // Create a progressbar 
     pDialog = new ProgressDialog(TvActivity.this); 
     // Set progressbar title 
     pDialog.setTitle("Video Streaming "); 
     // Set progressbar message 
     pDialog.setMessage("buffering ..."); 
     pDialog.setIndeterminate(true); 
     pDialog.setCancelable(true); 
     // Show progressbar 
     pDialog.show(); 

     try { 
      // Start the MediaController 
      final MediaController mediacontroller = new MediaController(
        TvActivity.this); 
      mediacontroller.setAnchorView(videoview); 

      // Get the URL from String VideoURL 
      final Uri video = Uri.parse(VideoURL); 
      videoview.setMediaController(mediacontroller); 
      videoview.setVideoURI(video); 
      videoview.requestFocus(); 
      videoview.setOnPreparedListener(new OnPreparedListener() { 

       // Close the progress bar and play the video 
       public void onPrepared(MediaPlayer mp) { 
        pDialog.dismiss(); 
        videoview.start(); 
       } 
      }); 

      videoview.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
       @Override 
       public void onCompletion(MediaPlayer mp) { 
        videoview.stopPlayback(); 
        videoview.setVideoURI(video); 
        videoview.requestFocus(); 
        videoview.start(); 
       } 
      }); 

     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 


    } 



} 

उत्तर

3

इस कोड को ठीक काम कर रहा हो जाएगा काम नहीं कर रहा है तो टिप्पणी में अपनी त्रुटि/समस्या पेस्ट करें।

public class TvActivity extends Activity { 

    // Declare variables 
    ProgressDialog pDialog; 
    VideoView videoview; 


    // Insert your Video URL 
    String VideoURL = ""; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Get the layout from video_main.xml 
     setContentView(R.layout.videoview_main); 
     // Find your VideoView in your video_main.xml layout 
     videoview = (VideoView) findViewById(R.id.VideoView); 
     // Execute StreamVideo AsyncTask 
     VideoURL = "http://ns3622101.ip-149-202-201.eu:8000/live/fr443500/75019pa/286.ts"; 

     // Create a progressbar 
     pDialog = new ProgressDialog(TvActivity.this); 
     // Set progressbar title 
     pDialog.setTitle("Video Streaming "); 
     // Set progressbar message 
     pDialog.setMessage("buffering ..."); 
     pDialog.setIndeterminate(true); 
     pDialog.setCancelable(true); 
     // Show progressbar 
     pDialog.show(); 

     try { 
      // Start the MediaController 
      final MediaController mediacontroller = new MediaController(
        TvActivity.this); 
      mediacontroller.setAnchorView(videoview); 

      // Get the URL from String VideoURL 
      final Uri video = Uri.parse(VideoURL); 
      videoview.setMediaController(mediacontroller); 
      videoview.setVideoURI(video); 
      videoview.requestFocus(); 
      videoview.setOnPreparedListener(new OnPreparedListener() { 

       // Close the progress bar and play the video 
       public void onPrepared(MediaPlayer mp) { 
        pDialog.dismiss(); 
        mp.start(); 
       } 
      }); 

      videoview.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
       @Override 
       public void onCompletion(MediaPlayer mp) { 
        mp.start(); 
        mp.pause(); 
        mp.setOnCompletionListener(this); 
       } 
      }); 

     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 


    } 



} 
+0

उत्तर के लिए धन्यवाद, अब यह वही buffered वीडियो लाभ फिर से चलाता है, कोई भी सुझाव मदद करेगा। – solid

+0

मैं उत्तर अद्यतन करता हूं, अधूरा चेक में जोड़ा गया विराम कथन यह काम कर रहा है या नहीं –

+0

मुझे यकीन नहीं था कि क्यों शुरू() के बाद रोकें() किसी भी विचार को ठीक करेगा, किसी भी तरह से इसका परीक्षण किया जाएगा, परिणाम वीडियो को रोक रहा था। – solid

5

जैसा कि आप लाइव स्ट्रीम यूआरएल से वीडियो चला रहे हैं आप वीडियो स्ट्रीम करने के लिए तीसरे पक्ष के प्लेयर का उपयोग करके वीडियो स्ट्रीम करने के लिए नहीं की जाती है और वीडियो के अगले भाग बफ़र के लिए, मैं तुम्हें एंड्रॉयड GirrafePlayer उपयोग करने के लिए यह अच्छा प्लेयर here

और as you are Streaming.tsfile मैं से इसे पाने के है का सुझाव ऐसा नहीं लगता कि एंड्रॉइड videoview इस वीडियो फ़ाइल को स्ट्रीम करेगा, इसलिए .ts फ़ाइल स्ट्रीमिंग समर्थित प्लेयर के साथ इस वीडियो फ़ाइल को स्ट्रीम करने का प्रयास करें।

+0

आपके सुझाव के लिए धन्यवाद, मैंने GirrafePlayer का परीक्षण किया है, यह वास्तव में अच्छा खिलाड़ी है, लेकिन यहां तक ​​कि GirrafePlayer में भी समस्याएं बनी रहती हैं। मुझे लगता है कि वीडियो व्यू में समस्या है, हमें वर्तमान भाग खेलने के दौरान अगले वीडियो हिस्से को बफर करने के लिए कुछ तरीका चाहिए। – solid

+1

वास्तव में आप **। Ts ** फ़ाइल खेल रहे हैं और जैसा कि मुझे पता है ** ts ** फ़ाइल सीधे स्ट्रीम नहीं होगी। यह प्लेलिस्ट ** एम 3 यू 8 ** फ़ाइल के साथ खेलता है ... इस पर आर एंड डी करें मैं उस पर और अधिक नहीं जानता। –

1
लाइव स्ट्रीमिंग के लिए

और भी बंद लाइन ऑडियो या वीडियो खेलने के लिए मैं प्रयोग किया जाता का सुझाव देते हैं ExoPlayer

कौन सा ऑडियो और वीडियो गूगल द्वारा विकसित खेल के लिए बहुत अच्छा पुस्तकालय है। लघु परिचय दिया गया है:

"एक्सप्लेयर एंड्रॉइड के लिए एक एप्लीकेशन लेवल मीडिया प्लेयर है। यह स्थानीय और इंटरनेट दोनों पर ऑडियो और वीडियो चलाने के लिए एंड्रॉइड के मीडियाप्लेयर एपीआई का विकल्प प्रदान करता है। एक्सप्लेयर वर्तमान में एंड्रॉइड के द्वारा समर्थित सुविधाओं का समर्थन करता है MediaPlayer API, जिसमें DASH और SmoothStreaming अनुकूली प्लेबैक शामिल हैं। MediaPlayer API के विपरीत, ExoPlayer को अनुकूलित और विस्तार करना आसान है, और Play Store अनुप्रयोग अपडेट के माध्यम से अपडेट किया जा सकता है। " अधिक जानकारी के लिए

Github पर Exoplayer खोजें।

+0

उत्तर के लिए धन्यवाद, मैं इसे देखता हूं और परिणाम प्रदान करता हूं। – solid

संबंधित मुद्दे