2013-10-31 35 views
5

MediaCodec kitaplığını kullanarak bir Video Oynatıcı yaptım ve bir oynatma listesi özelliği eklemek istedim. İki ardışık video arasında daha yumuşak bir geçiş yapmak için MediaCodec'in iki örneğini kullanmaya çalıştım, ancak bu tehlikeli gibi görünüyor, bazı cihazlarda (S4 ile siyanogeni denedim) mükemmel çalıştı, ancak TouchWiz ile aynı S4'te Media Codec bildiriminde kod çöktü. Bu kod parçacığı geçerli:Çoklu MediaCodec örnekleri

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

ve ben TouchWiz S4 bindi istisna edilir

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) 

kimse bana doğru bu nasıl yapılacağına ilişkin bazı kurallar işaret edebilir? Belki farklı konular? Farklı videolar arasında sorunsuz geçiş yapmak istiyorum, ancak en azından bazı cihazlarda sürekli olarak çalışmam gerekiyor.

teşekkürler Sen FORMAT2 için aynı çıkarıcı örneğini kullanan

cevap

0

çok: MediaFormat FORMAT2 = >> çıkarıcı < < .getTrackFormat (0);

Aynı anda birden fazla MediaExtractors çalıştırabildiniz mi?

+0

lanet (S3 olduğu gibi) bir yazım hatası, gerçek zamanlı dekode olmayabilir bir sw kod çözücü bulur olabilir i düzenlenmiş ama hata hala devam Ben sadece Android kamera ile çekilen videolara daraltdım. – roimatola

+0

Benzer bir sorun yaşıyorum. Çözdün mü? – pstoppani

+0

@roimatola Bunun için bir çözüm buldunuz mu merak ediyorum? –

4

Deneyimlerime göre, sorununuz yeterli kaynak olmadığı zaman ortaya çıkıyor, böylece aynı codec bileşeninin iki örneği oluşturulur. Örneğin, paralel olarak iki 1080p, h264 kod çözücüsü yapılandırmaya çalışırken, S3'te aldım, ancak bir 720p ve bir 1080p veya iki 720p kod çözücüye sahip olmak, yalnızca iyi çalışıyor. hiçbir çözümün mükemmel olmasına rağmen sen, ne yapabilirdi: bu durumlarda

  • bariz bir, bitirmek ve ancak o zaman ikincisini yapılandırmak için ilk codec'i bekleyin.

  • Aynı dosya için alternatif bir dekoder için kod çözücüleri listesinde arama yapın. Bu, bazı cihazlarda çalışır, ancak diğerleri değildir ya da sadece