Domanda

Sto avendo grandi difficoltà a ottenere la mia applicazione Android per riprodurre i video dalla scheda SD. Non importa quali dimensioni, bitrate, formato video, o qualsiasi altra impostazione mi viene in mente, né l'emulatore né il mio G1 giocherà qualsiasi cosa provo per codificare. Ho anche provato un certo numero di video dal web (formati vari video, bitrate, con e senza tracce audio, ecc), e nessuno di quelli funzionato neanche.

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

"Impossibile riprodurre video"

"Siamo spiacenti, questo video non può essere riprodotto."

Non ci sono errori segnalati in LogCat, ma io non li capisco e ho provato a cercare in Internet per ulteriori spiegazioni senza alcuna fortuna. Vedi sotto:

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();

Si prega di aiutare!

È stato utile?

Soluzione

Va bene, qui va. Il video che ho lavorato in Adobe Premiere si suppone che sia 480x800 (L x A), ma ho l'uscita di Adobe Media Encoder la sequenza come un "Microsoft AVI non compresso" utilizzando il "UYVY" codec video, frame rate 24fps, progressivo , pixel quadrati e dimensioni: 720x800 (LxH). Questo genera una piuttosto grande file con 120px bordi neri su entrambi i lati del contenuto video. Ho poi prendo il video in freno a mano 0.9.4 e utilizzare le seguenti impostazioni (Ho iniziato con il Regular-> preimpostata 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 dimensioni (larghezza x altezza). Dopo aver cambiato la larghezza a 320 (valori superiori non funzionava), pur mantenendo le proporzioni corretta, l'uscita video ora gioca senza errori. Spero che questo aiuta qualcun altro con un problema simile.

Nota a margine: Vorrei che le restrizioni di video Android sono stati meglio documentati

.

Altri suggerimenti

Ho avuto un po 'di problemi a trovare molti video diversi per giocare sul mio telefono (HTC Hero). un gioco da 512K MP4 standard (esempio: http://www.archive.org/details/more_animation ), verificare con loro prima per assicurarsi che non è il vostro 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 + "'" );
        }

stavo affrontando questo problema fino a quando ho capito che il problema era nella directory del mio video. Stavo salvando i miei video in una directory che non è raggiungibile per la visualizzazione video. Così ogni volta che cerco di riprodurre un video mi dà messaggio di errore dice: "Impossibile aprire il video" o qualcosa di simile. Cercare di salvare il video in questa directory che sarà visibile anche nella galleria del telefono.

String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/" + "your app name ";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top