studio pro mediaplayer mecool m8s library example ejemplo create android media-player

pro - Android MediaPlayer ha lanzado "Preparar error: estado=0x1" en 2.1, funciona en 2.2



mediaplayer android studio ejemplo (13)

Realmente he estado golpeando mi cabeza contra la mesa intentando que la clase MediaPlayer intente reproducir videos codificados con h.264 en Android 2.1. Mi código es bastante simple:

AssetFileDescriptor fileDescriptor = getResources().openRawResourceFd(R.raw.my_movie); introMoviePlayer = new MediaPlayer(); introMoviePlayer.setDataSource(fileDescriptor.getFileDescriptor(), fileDescriptor.getStartOffset(), fileDescriptor.getDeclaredLength()); introMoviePlayer.prepare();

Esto siempre lanza una excepción en prepare() , con el texto java.io.IOException: Prepare failed.: status=0x1 . Obtuve un poco más de información al usar MediaPlayer.create() con un URI, que también se lanza en prepare() , al que MediaPlayer.create() llama, con el mensaje Command PLAYER_PREPARE completed with an error or info PVMFErrResourceConfiguration .

El mismo código funciona perfectamente en Froyo (2.2). Los videos se reproducen bien en la aplicación del reproductor de video. ¿Alguien tiene quizás una sugerencia útil que pueda ayudar a resolver este problema?

Edit : Todavía no hay solución - problema muy frustrante por cierto. Sin embargo, he descubierto que al crear un VideoView y configurar el URI para las obras de video sin procesar. Esto es muy desconcertante, ya que enviar el mismo URI a través de una clase de MediaPlayer lanzará.


En mi caso, era solo un nombre de archivo que no le gustaba:
/storage/emulated/0/appname/2018-03-12T11:52:08Z.wav
Se eliminaron los guiones y los dos puntos, y la excepción desapareció.


En mi opinión, le pediré que verifique nuevamente su ubicación de sus archivos multimedia << SONG PATH o MOVIE PATH >>. Me enfrenté a esta excepción, he superado con el correcto "SONG PATH"


Encontré la mejor y más clara solución para este error: java.io.IOException: Prepare failed.: status=0x1 error de java.io.IOException: Prepare failed.: status=0x1

Nota

Si desea leer de su tarjeta SD y recibió este error, no está configurado
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> en tu Manifast.

Nota 2

Si desea reproducir desde la URL y tiene ese error, tal vez esté configurado setDataSource para que así: https://www.android.com simplemente elimine S de http como este http://www.android.com


Esta es mi solución:

MediaPlayer mediaPlayer = new MediaPlayer(); FileInputStream fis = null; try { fis = new FileInputStream(mp3File); mediaPlayer.setDataSource(fis.getFD()); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.prepare(); } finally { if (fis != null) { try { fis.close(); } catch (IOException ignore) { } } }


Inicia el nombre de archivo, instancia de mediaPlayer:

try { mp = new MediaPlayer(); mp.setAudioStreamType(AudioManager.STREAM_RING); //set streaming according to ur needs mp.setDataSource(Context, Uri.parse("android.resource://yourAppPackageName/raw/"+fileName)); mp.setLooping(true); mp.prepare(); mp.start(); } catch (Exception e) { System.out.println("Unable to TunePlay: startRingtone(): "+e.toString()); }

para reproducir / iniciar un archivo de audio desde el directorio res / raw:

try { if (!(mp == null) && mp.isPlaying()) { mp.stop(); mp.release(); //its a very good practice } } catch (Exception e) { System.out.println("Unable to TunePlay: stopRingtone():"+e.toString()); }

finalmente deteniendo el archivo de audio:

public String getEncodedURL(String urlStr) throws Exception { URL url = new URL(urlStr); URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef()); urlStr = uri.toASCIIString(); return urlStr; }


No sé si este es su problema, pero acabo de encontrar una solución al problema descrito anteriormente por Tuszy. Pude leer el archivo que estaba creando desde un almacenamiento externo pero no desde Cache.

La solución es que los permisos de lectura y escritura al escribir el archivo son diferentes.

Por favor, vea esta excelente explicación en este blog que encontré.

http://blog.weston-fl.com/android-mediaplayer-prepare-throws-status0x1-error1-2147483648/


Para reproducir un archivo de video o audio ubicado en la carpeta en bruto, use:

MediaPlayer mp = ...; Uri uri = Uri.parse("android.resource://com.example.myapp/" + R.raw.my_movie"); mp.setDataSourceUri(this, uri);

no es necesario llamar a prepare () cuando se usa MediaPlayer.create (Context, R.raw.some_resource_file)


Primero gracias por su código, el recurso abierto abierto me ayudó con mi problema.

Lo siento, no tengo una respuesta definitiva a su problema, pero en base al ejemplo de api media en el SDK y mi reproductor de medios en mi proyecto, sugeriría verificar que el archivo se abra correctamente.

De lo contrario, tal vez necesite configurar la pantalla antes de prepararse como tal:

mMediaPlayer = new MediaPlayer(); mMediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(), fileDescriptor.getStartOffset(), fileDescriptor.getDeclaredLength()); mMediaPlayer.setDisplay(holder); mMediaPlayer.prepare();

esas son las únicas ideas que tengo

Espero eso ayude

Jason


Sé que esto puede ser demasiado tarde. Me las arreglé para usar video de recursos como esto:

private MediaPlayer mp; private final static String fileName = "ring";


Sé que llego tarde aquí, pero espero que esto ayude a alguien más. setOnCompletionListener este problema al configurar una setOnCompletionListener llamada setOnCompletionListener que libera explícitamente el objeto MediaPlayer después de que se haya reproducido el medio.

No puedo tomar crédito por esta solución, ya que fue publicada originalmente por Ronny aquí: ¿Cómo detectas cuando un archivo de sonido ha terminado?

Pero como esta es la primera respuesta cuando busco Android + Failed Status 0x1, aquí está mi código que resolvió este problema para mí:

public void playSound(String soundPath){ MediaPlayer m = new MediaPlayer(); m.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mp.release(); } }); try { AssetFileDescriptor descriptor = mContext.getAssets().openFd(soundPath); m.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength()); descriptor.close(); m.prepare(); m.setVolume(100f, 100f); m.setLooping(false); m.start(); } catch (Exception e) { //Your catch code here. } }


Si está tratando con una URL remota, use el siguiente código para obtener una url codificada compatible con MediaPlayer.

mMediaPlayer = MediaPlayer.create(this, R.raw.a_video_or_audio_file); mMediaPlayer.start();


Si está utilizando varias instancias de MediaPlayer , asegúrese de haber ejecutado release() en un recurso antes de intentar usarlo en una instancia diferente.


Tuve un problema similar. Tenía un archivo zip que contenía archivos de sonido comprimidos. Para pasarlos a MediaPlayer debían estar sin comprimir. Cuando los coloqué en el directorio de caché de la aplicación ( context.getCacheDir() ), MediaPlayer devolvió el mismo error que describió.

Pero cuando los coloqué en un almacenamiento externo ( Environment.getExternalStorageDirectory() ), todo comenzó a funcionar.