2010-03-30 14 views
6

Ho grandi difficoltà a ottenere la mia applicazione Android per riprodurre video dalla scheda SD. Non importa quale dimensione, bitrate, formato video, o qualsiasi altra impostazione mi viene in mente, né l'emulatore né il mio G1 riproducono qualcosa che cerco di codificare. Ho anche provato diversi video dal web (vari formati video, bitrate, con e senza tracce audio, ecc.) E nessuno di questi lavori.Android - Non è possibile riprodurre alcun video (mp4/mov/3gp/etc.)?

Tutto quello che continuo a ricevere è una finestra di dialogo che dice:

"Impossibile riprodurre video"

"Mi dispiace, questo video non può essere riprodotto."

Ci sono errori riportati in LogCat, ma non li capisco e ho provato a cercare su Internet ulteriori spiegazioni senza fortuna. Vedere di seguito:

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 volte ho anche ottenere questo:

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) 

Ecco il codice che sto usando (nel mio metodo 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(); 

Please help!

risposta

10

Va bene, qui va. Il video su cui ho lavorato in Adobe Premiere dovrebbe essere 480x800 (WxH), ma ho Adobe Media Encoder che emette la sequenza come "Microsoft AVI non compresso" utilizzando il codec video "UYVY", frame rate a 24 fps, progressivo , pixel quadrati e dimensioni: 720x800 (WxH). Questo produce un file piuttosto grande con bordi neri di 120 pixel su entrambi i lati del contenuto del video. Ho poi prendo il video in freno a mano 0.9.4 e utilizzare le seguenti impostazioni (ho iniziato con le Regular-> preimpostate Normale):

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] 

Il mio problema principale era che stavo cercando di uscita un file MP4 con 480x800 (WxH) dimensioni. Dopo aver cambiato la larghezza in 320 (i valori più alti non hanno funzionato), pur mantenendo le proporzioni corrette, il video di output viene ora riprodotto senza errori. Spero che questo aiuti qualcun altro con un problema simile.

Nota a margine: vorrei che le restrizioni video di Android fossero meglio documentate.

+3

"Vorrei che le restrizioni sui video di Android fossero meglio documentate." Non potrei essere più d'accordo con te. Ho persino seguito il tuo esempio e ancora non riesco a far scorrere il video. –

+0

potresti per piacere postare codice quello che hai fatto qui non è comprensibile in realtà io sono nuovo in questo campo ogni aiuto sarebbe appreicato. – UMAR

+0

Sì, è un vero problema lavorare con VideoView e MediaPlayer. Grazie per il tuo Q & A. –

3

Ho avuto un po 'di problemi nel riprodurre molti video diversi sul mio telefono (HTC Hero). Riproduzione standard di 512K mp4 (esempio: http://www.archive.org/details/more_animation), controlla prima con loro per assicurarsi che non sia il tuo codice.

Ecco il mio codice, da onCreate() in una sub-attività che svolge solo il file video:




    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

Grazie per la risposta. Ho seguito il tuo consiglio e scaricato un video dal sito che hai fornito, "The Lost Kitten 1938" (512k mpeg4), e ha funzionato perfettamente usando lo stesso codice esatto che ho fornito. Grazie per questo.Proverò a ricodificare i miei video per abbinare le specifiche del campione scaricato e tornare a postare i dettagli. Sapresti forse delle impostazioni esatte che dovrei usare nel mio codificatore (posso usare Adobe Media Encoder o Handbrake)? – RyanM

0

Stavo affrontando questo problema finché non ho capito che il problema era nella directory del mio video. Stavo salvando i miei video in una directory che non è raggiungibile dalla vista del video. Quindi ogni volta che provo a riprodurre un video, mi viene visualizzato un messaggio di errore: "Impossibile aprire il video" o qualcosa del genere. Prova e salva il tuo video in questa directory che sarà visibile anche nella galleria del telefono.

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