2013-10-31 16 views
5

Ho creato un lettore video utilizzando la libreria MediaCodec e volevo aggiungere una funzione di playlist. Ho provato ad avere due istanze di MediaCodec per rendere più agevole la transizione tra due video consecutivi, tuttavia questo sembra essere pericoloso, in alcuni dispositivi (ho provato un S4 con cyanogen) ha funzionato perfettamente, tuttavia in un S4 con TouchWiz lo stesso codice si è bloccato nella dichiarazione di Codec multimediale. Questo è il frammento di codice:Istanze Multiple MediaCodec

MediaExtractor extractor = new MediaExtractor(); 
extractor.setDataSource(path1); 

MediaFormat format = extractor.getTrackFormat(0); 
String mime = format.getString(MediaFormat.KEY_MIME); 

extractor.selectTrack(0); 
MediaCodec decoder = MediaCodec.createDecoderByType(mime); 
decoder.configure(format, null, null, 0); 

MediaExtractor extractor2 = new MediaExtractor(); 
extractor2.setDataSource(path2); 

MediaFormat format2 = extractor2.getTrackFormat(0); 
String mime2 = format.getString(MediaFormat.KEY_MIME); 

extractor2.selectTrack(0); 
MediaCodec decoder2 = MediaCodec.createDecoderByType(mime2); 
decoder2.configure(format2, null, null, 0); 

e l'eccezione ho ottenuto sulla TouchWiz S4 è

E/ACodec(17651): configureCodec multi window instance fail appPid : 17651 
E/ACodec(17651): [OMX.qcom.video.decoder.avc] configureCodec returning error -38 
E/MediaCodec(17651): Codec reported an error. (omx error 0x80001001, internalError -38) 

Qualcuno mi può indicare alcune linee guida su come farlo correttamente? Forse diversi thread? Mi piacerebbe davvero fare una transizione graduale tra video diversi, ma ho bisogno che funzioni in modo coerente almeno in alcuni dispositivi.

Grazie mille

risposta

0

Si utilizza la stessa istanza estrattore FORMAT2: MediaFormat FORMAT2 = >> estrattore < < .getTrackFormat (0);

Sei riuscito a far funzionare più di un MediaExtractor nello stesso momento?

+0

maledetto, è stato un errore di battitura, ho modificato ma il bug persiste , l'ho ristretto solo ai video che sono stati girati con la fotocamera Android. – roimatola

+0

Sto avendo un problema simile. L'hai risolto? – pstoppani

+0

@roimatola Sono curioso di sapere se hai mai trovato una soluzione per questo? –

4

Dalla mia esperienza, il problema si verifica quando non ci sono abbastanza risorse in modo da creare due istanze dello stesso codec. Per esempio, l'ho preso su S3 quando provavo a configurare due decodificatori 1080p, h264 in parallelo, ma con un decodificatore a 720p e uno a 1080p, o due a 720p, corro perfettamente. Che cosa si potrebbe fare, anche se nessuna soluzione è perfetta:

  • L'ovvia, in quelle situazioni attendere per il primo codec per finire e solo allora configurare il secondo.

  • Cerca nell'elenco decodificatori per un decodificatore alternativo per lo stesso file. Questo può funzionare su alcuni dispositivi, ma su altri non o solo trova un decoder sw che potrebbe non decodifica in tempo reale (come è il caso in S3)

Problemi correlati