Pregunta

Estoy teniendo grandes dificultades para conseguir mi aplicación Android para reproducir vídeos desde la tarjeta SD. No importa qué tamaño, tasa de bits, formato de vídeo, o cualquier otra configuración que puedo pensar, ni el emulador ni mi G1 jugará nada Trato de codificación. También he intentado una serie de videos de la web (varios formatos de vídeo, tasa de bits, con y sin pistas de audio, etc.), y ninguno de los trabajos tampoco.

Todo lo que sigue apareciendo es un cuadro de diálogo que dice:

"No se puede reproducir el vídeo"

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

Hay errores reportados en LogCat, pero yo no los entiendo y he probado la búsqueda en Internet para obtener más explicaciones sin ninguna suerte. Vea a continuación:

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)

Este es 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!

¿Fue útil?

Solución

Bueno, aquí va. El vídeo que he estado trabajando en Adobe Premiere se supone que es 480x800 (ancho x alto), pero tengo la salida de Adobe Media Encoder la secuencia como un "Microsoft AVI sin comprimir" con el códec de vídeo "UYVY", 24fps velocidad de fotogramas, progresiva , los píxeles cuadrados, y dimensiones: 720x800 (ancho x alto). Esto genera un archivo bastante grande con 120px bordes negros a ambos lados de los contenidos de vídeo. entonces tomo el vídeo en el freno de mano 0.9.4 y utilizar los siguientes ajustes (Empecé con la Regular-> prefijado 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 problema principal era que yo estaba tratando de salida de un archivo MP4 con 480x800 dimensiones (ancho x alto). Después de cambiar el ancho a 320 (valores más altos no de trabajo), pero manteniendo la relación de aspecto correcta, la salida de vídeo ahora juega sin errores. Espero que esto ayude a otra persona con un problema similar.

Nota al margen: Me gustaría que las restricciones de vídeo Android estaban mejor documentados

.

Otros consejos

he tenido un poco de problemas para conseguir muchos videos diferentes para jugar en mi teléfono (HTC héroe). Estándar 512K juego de mp4 (ejemplo: http://www.archive.org/details/more_animation ), consulte con ellos primero para asegurarse de que no es 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 + "'" );
        }

Yo estaba frente a este problema hasta que me di cuenta de que el problema estaba en el directorio de mi video. Lo estaba guardando mis videos a un directorio que no es accesible a la vista de vídeo. Así que cada vez que intento reproducir un vídeo que me da mensaje de error dice: "No se puede vídeo abierto" o algo por el estilo. Tratar de guardar el vídeo en este directorio que será también visible en la galería de teléfono.

String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/" + "your app name ";
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top