2011-04-19 9 views
8

मैं एक यूआरएल से एमपी 4 वीडियो (एच .264, एएसी कोडेक्स) चलाने के लिए नीचे दिए गए कोड का उपयोग करता हूं (यूआरएल पूरी तरह ठीक है, कोई रीडायरेक्ट नहीं है, 404 या कुछ भी नहीं है)। हालांकि, मैं त्रुटियों को "वैध मेडियाप्लेयर के बिना गेटडिशन कॉल करने का प्रयास" या त्रुटि/मीडियाप्लेयर (382): त्रुटि (1, -2147483648) प्राप्त कर रहा हूं। क्या किसी को यह पता है कि इसे कैसे ठीक किया जाए? धन्यवादएंड्रॉइड: वैध मेडियाप्लेयर के बिना गेटडिशन कॉल करने का प्रयास

VideoView video = (VideoView) findViewById(R.id.myvideo); 

Intent videoint=getIntent(); 
String url = videoint.getStringExtra("url"); //The url pointing to the mp4 
video.setVideoPath(url); 
video.requestFocus(); 
video.setMediaController(new MediaController(this)); 
video.start(); 

उत्तर

22

onPrepared कॉलबैक से अवधि को पुनः प्राप्त ... इस से यह सुनिश्चित होगा इससे पहले कि आप की अवधि पाने के लिए प्रयास करने के वीडियो ठीक से भरी हुई है।

final VideoView video = (VideoView) findViewById(R.id.videoplayer); 
      final MediaController controller = new MediaController(this); 

      video.setVideoURI(Uri.parse(getIntent().getStringExtra("url"))); 
      video.setMediaController(controller); 
      controller.setMediaPlayer(video); 
      video.setOnPreparedListener(new OnPreparedListener() { 

        public void onPrepared(MediaPlayer mp) { 
         int duration = video.getDuration(); 
         video.requestFocus(); 
         video.start(); 
         controller.show(); 

        } 
       }); 
+2

न्यू त्रुटि त्रुटि: (-38, 0) VideoView पर। कोई उपाय? –

+0

यह एक सामान्य त्रुटि है और कुछ भी चीजें हो सकती हैं। – Joe

+0

धन्यवाद कुछ नई चीजों को प्रतिबिंबित करने के लिए ऊपर संपादित किया गया, बहुत धन्यवाद, जो !!!! – ihrupin

1

आप सभी नियंत्रण कि मीडियाप्लेयर के साथ बातचीत में यह सेटअप और तैयार है के बाद स्थापित कर रहे हैं सुनिश्चित करें। उदाहरण के लिए:

  mediaPlayer.setDataSource(dataSource); 
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    mediaPlayer.setOnCompletionListener(this); 
    mediaPlayer.prepare(); 
    progressBar = (ProgressBar) findViewById(R.id.progbar); 
    progressBar.setVisibility(ProgressBar.VISIBLE); 
      progressBar.setProgress(0); 
      progressBar.setMax(mp.getDuration()); 
     mediaPlayer.start(); 
0

मेरे मामले में यह समस्या तलाशबार के साथ थी। मेरी सेवा वर्ग में मैं बदल दिया है:

@Override 
public void onPrepared(MediaPlayer mp) { 
    mp.start();} 

public getDur() { return mediaPalyer.getDuration} 

को
int dr; //at the top inside Service class 

@Override 
public void onPrepared(MediaPlayer mp) { 
    mp.start(); 
    dr = player.getDuration();} 

public getDur() { return dr} 
संबंधित मुद्दे