2015-10-22 3 views
5

ich aufgezeichnet mp4-Daten unter Verwendung von Android Media Player spielen wollen, aber wenn ich versuche, diesen Fehler zeigte zu spielen:java.io.IOException: setDataSource fehlgeschlagen, wenn die Wiedergabe aufgezeichnet mp4

java.io.IOException: setDataSource fehlgeschlagen .

bei android.media.MediaPlayer.setDataSource (MediaPlayer.java:1086)

bei android.media.MediaPlayer.setDataSource (MediaPlayer.java:1032)

Dies ist mein Code:

final ImageView play = (ImageView) root.findViewById(R.id.voice_play); 
     play.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       try { 
        player = new MediaPlayer(); 
        if (player.isPlaying()) { 
         player.reset(); 
        } 
        player.setDataSource("file://mnt/sdcard/Android/data/com.myapp.apptalk/AudioRecorder/22-Oct-2015 11:26:14.mp4"); 
        player.prepare(); 

        seekbar.setMax(player.getDuration()); 

        if (isPlay) { 
         player.stop(); 
         play.setImageResource(R.drawable.play); 
         handler.removeCallbacks(runnable); 
         isPlay = false; 
        } else { 
         player.start(); 

         runnable = new Runnable() { 
          @Override 
          public void run() { 
           seekbar.setProgress(player.getCurrentPosition()); 
           handler.postDelayed(this, 1000); 
          } 
         }; 
         handler = new Handler(); 
         handler.post(runnable); 

         play.setImageResource(R.drawable.stop); 
         isPlay = true; 
        } 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 

Jeder kann helfen?

Antwort

3

Ich löste gerade dieses Problem gestern

Statt direkter Weg zu setDataSource geben, geben Sie den Pfad

try 
      {     
       Log.d("SetDatasource path", playRecordPath); 

       File filePath = new File(playRecordPath); 

       if (!filePath.exists()) 
       { 
        filePath.createNewFile(); 
       } 

       FileInputStream is = new FileInputStream(filePath); 

       mMediaRecordingPlayer.setDataSource(is.getFD()); 

       mMediaRecordingPlayer.prepare(); 

       is.close(); 
      } 
      catch (IllegalArgumentException e) 
      { 
       e.printStackTrace(); 
      } 
      catch (SecurityException e) 
      { 
       e.printStackTrace(); 
      } 
      catch (IllegalStateException e) 
      { 
       e.printStackTrace(); 
      } 
      catch (IOException e) 
      { 
       e.printStackTrace(); 
      } 

Und dann in onPrepared Methode

@Override 
    public void onPrepared(MediaPlayer mp) 
    { 
     mMediaRecordingPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

     mMediaRecordingPlayer.setVolume(1.5f, 1.5f); 

     mMediaRecordingPlayer.start(); 

     duration = mMediaRecordingPlayer.getDuration(); 

     mSeekBarPlayer.setMax(duration); 

     mSeekBarPlayer.postDelayed(onEverySecond, 1000); 
    } 

auf Datei, während die Medien Initialisierung Spieler tun dies

mMediaRecordingPlayer = new MediaPlayer(); 

mMediaRecordingPlayer.setOnPreparedListener(this); 

Und in Ihrer Aktivität müssen Sie diese jetzt

public class MainActivity extends Activity implements OnPreparedListener 
+0

implementieren, ist es nicht früheren Fehler zeigen, bu es immer zeigen: java.io.FileNotFoundException: file:/storage/emulierten/0/Audiorecorder/blablabla. mp4: open failed: ENOENT (Keine solche Datei oder Verzeichnis) – Redturbo

+0

Das liegt daran, dass die Datei, die Sie aufzeichnen, und der Pfad, den Sie der Datei zum Abspielen geben, anders ist. Protokollieren Sie den Pfad während der Aufnahme und loggen Sie den Pfad erneut ein Die Datei zum Abspielen der Aufnahme –

+0

speichern Sie den Pfad während der Aufnahme und geben Sie dann den gleichen Pfad während der Wiedergabe des Datensatzes –

Verwandte Themen