2010-03-30 14 views
6

Tengo grandes dificultades para obtener mi aplicación Android para reproducir videos desde la tarjeta SD. No importa qué tamaño, velocidad de bits, formato de video o cualquier otra configuración se me ocurra, ni el emulador ni mi G1 reproducirán nada que trate de codificar. También probé varios videos de la web (varios formatos de video, bitrates, con y sin pistas de audio, etc.), y ninguno de esos funciona tampoco.Android - ¿No se puede reproducir ningún video (mp4/mov/3gp/etc.)?

Todos me siguen dando es un cuadro de diálogo que dice:

"No se puede reproducir el vídeo"

"Lo sentimos, pero este video no se puede reproducir."

Se han encontrado errores en LogCat, pero no los entiendo y he intentado buscar en Internet explicaciones adicionales sin suerte. Ver más abajo:

03-30 05:34:26.807: ERROR/QCOmxcore(51): OMXCORE API : Free Handle 390d4 
03-30 05:34:26.817: ERROR/QCOmxcore(51): Unloading the dynamic library for OMX.qcom.video.decoder.avc 
03-30 05:34:26.817: ERROR/PlayerDriver(51): Command PLAYER_PREPARE completed with an error or info PVMFErrNoResources 
03-30 05:34:26.857: ERROR/MediaPlayer(14744): error (1, -15)03-30 05:34:26.867: ERROR/MediaPlayer(14744): Error (1,-15) 

A veces también sale esto:

03-30 05:49:49.267: ERROR/PlayerDriver(51): Command PLAYER_INIT completed with an error or info PVMFErrResource 
03-30 05:49:49.267: ERROR/MediaPlayer(19049): error (1, -17) 
03-30 05:49:49.347: ERROR/MediaPlayer(19049): Error (1,-17) 

Aquí está el código que estoy usando (en mi método onCreate()):

this.setContentView(R.layout.main); 
//just a simple VideoView loading files from the SD card 
VideoView myIntroView = (VideoView) this.findViewById(R.id.VideoView01); 
MediaController mc = new MediaController(this); 
myIntroView.setMediaController(mc); 
myIntroView.setVideoPath("/sdcard/test.mp4"); 
myIntroView.requestFocus(); 
myIntroView.start(); 

Por favor, ayuda!

Respuesta

10

bien, aquí va. El video en el que he estado trabajando en Adobe Premiere se supone que es 480x800 (WxH), pero el Adobe Media Encoder muestra la secuencia como un "AVI de Microsoft sin comprimir" usando el códec de video "UYVY", velocidad de fotogramas de 24 fps, progresiva , píxeles cuadrados y dimensiones: 720x800 (ancho x alto). Esto produce un archivo bastante grande con bordes negros 120px en cualquier lado del contenido de video. entonces tomo el vídeo en el freno de mano 0.9.4 y utilizar los siguientes ajustes (Empecé con las Regular-> preestablecidos Normal):

Container: MP4 File 
Large file size: [un-Checked] 
Web-optimized: [un-Checked] 
iPod 5G support: [un-Checked] 

Width: 320 (this is key, any higher than 320 and it won’t work) 
Height: 528 
Keep Aspect Ratio: [Checked] 
Anamorphic: None 

Crop Left: 120 
Crop Right: 120 

Everything under the "Video Filter" tab set to "Off" 

Video Codec: H.264(x264) 
Framerate: same as source 
2-Pass Encoding: [Checked] 
Turbo first pass: [un-Checked] 
Avg Bitrate: 384 

Create chapter markers: [un-Checked] 

Reference Frames: 2 
Mixed References: [un-Checked] 
B-Frames: 0 
Motion Estimation Method: Uneven Multi-Hexagon 
Sub-pixel Motion Estimation: 9 
Motion Estimation Range: 16 
Analysis: Default 
8x8 DCT: [un-Checked] 
CABAC Entropy Coding: [un-Checked] 
No Fast-P-Skip: [un-Checked] 
No DCT-Decimate: [un-Checked] 
Deblocking: Default, Default 
Psychovisual Rate Distortion: [MAX] 

Mi principal problema fue que yo estaba tratando de salida de un archivo MP4 con 480x800 (WxH) dimensiones. Después de cambiar el ancho a 320 (los valores más altos no funcionaron), pero manteniendo la relación de aspecto adecuada, el video de salida ahora se reproduce sin errores. Espero que esto ayude a alguien más con un problema similar.

Nota al margen: desearía que las restricciones de video de Android estuvieran mejor documentadas.

+3

"Me gustaría que las restricciones de video de Android estuvieran mejor documentadas". No podría estar más de acuerdo. Incluso he seguido tu ejemplo y aún no puedo obtener video para transmitir. –

+0

podría publicar código que lo que hizo aquí no es comprensible, de hecho, soy nuevo en este campo, cualquier ayuda sería apreciada. – UMAR

+0

Sí, es un verdadero dolor trabajar con VideoView y MediaPlayer. Gracias por su Q & A. –

3

He tenido bastantes problemas para obtener muchos videos diferentes para jugar en mi teléfono (héroe HTC). Juego de 512K mp4 estándar (ejemplo: http://www.archive.org/details/more_animation), consulte con ellos primero para asegurarse de que no sea su código.

Aquí está mi código, desde onCreate() en una sub-actividad que sólo se reproduce el archivo de vídeo:




    protected VideoView mine; 
    protected boolean done = false; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.videoshow); 
     mine = (VideoView) findViewById(R.id.video); // Save the VideoView for touch event processing 
     try { 
      String myURI = "/sdcard/" + path + "/v/" 
          + currentItem.getFile() 
          + "." + currentItem.getFileType(); 
      Uri video = Uri.parse(myURI); 
      mine.setVideoURI(video); 
      mine.start(); 
      mine.setOnCompletionListener(new OnCompletionListener() { 

       public void onCompletion(MediaPlayer mp) { 
        result.putExtra("com.ejf.convincer01.Finished", true); 
        done = true; 
       } 
      }); 
     } catch (Exception ex) { 
      Log.d(DEBUG_TAG, "Video failed: '" + ex + "'"); 
     } 
+0

Gracias por responder. Seguí tu consejo y descargué un video del sitio que proporcionaste, "The Lost Kitten 1938" (512k mpeg4), y funcionó a la perfección utilizando el mismo código exacto que proporcioné. Gracias por esto.Intentaré volver a codificar mis videos para que coincidan con las especificaciones de la muestra descargada y regresar para publicar los detalles. ¿Sabrá quizás de la configuración exacta que debo usar en mi codificador (puedo usar Adobe Media Encoder o Handbrake)? – RyanM

0

Estaba enfrentando este problema hasta que descubrí que el problema estaba en el directorio de mi video. Estaba guardando mis videos en un directorio que no se puede acceder a la vista de video. Así que cada vez que intento reproducir un video me da un mensaje de error que dice: "No se puede abrir el video" o algo así. Pruebe y guarde su video en este directorio que también estará visible en la galería telefónica.

String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/" + "your app name "; 
Cuestiones relacionadas