2016-03-31 14 views
2

HEVC kodlanmış videosu, Samsung Galaxy S6 üzerinde bir MediaMuxer MPEG-4 kapsayıcısına eşlemeye çalışılıyor. (MediaCodec elde edilen)MediaMuxer HEVC "kodek yapılandırması yok"

MediaFormat: in the docs

MediaMuxer oluşturur tabloya göre

{height=1080, width=1920, max_capacity=8847360, what=1869968451, mime=video/hevc, csd-0=java.nio.ByteArrayBuffer[position=0,limit=76,capacity=76], remained_resource=6773760} 

CSD-0 orada belirir ve onun tüm bu, H265/hevc için yeterli Bu formata dayalı 0 endeksi ile video izlemesi. bazı örnekler yazma ve ardından LogCat yukarı gösterileri mediaMuxer.stop(), IllegalStateException atılır arama ve izledikten sonra:

 
E/MPEG4Writer: Missing codec specific data 
D/MPEG4Writer: Video track stopping 
D/MPEG4Writer: Video track source stopping 
D/MPEG4Writer: Video track source stopped 
I/MPEG4Writer: Received total/0-length (247/0) buffers and encoded 247 frames. - Audio 
I/MPEG4Writer: Audio track drift time: 0 us 
I/MPEG4Writer: Received total/0-length (173/0) buffers and encoded 173 frames. - Video 
D/MPEG4Writer: Video track stopped 
D/MPEG4Writer: Audio track stopping 
D/MPEG4Writer: Audio track source stopping 
D/MPEG4Writer: Audio track source stopped 
D/MPEG4Writer: Audio track stopped 
D/MPEG4Writer: Duration from tracks range is [5744606, 5764430] us 
D/MPEG4Writer: Stopping writer thread 
D/MPEG4Writer: 0 chunks are written in the last batch 
D/MPEG4Writer: Writer thread stopped 
E/MP4FileMuxer: finish: stop or release failed 
java.lang.IllegalStateException: Failed to stop the muxer 

Oluşturulan MP4 dosya oynatılamıyor. Sorun ne olabilir?

cevap

1

Kendi sorumu cevaplamak için: "video/hevc" sadece Android 7.0 r1 ile başlayan MediaMuxer tarafından destekleniyor gibi görünüyor (N-preview-5 ile bile çalışmaz). MediaMuxer.addTrack() belgelerinin bunu yansıtması için güncellenmiş gibi görünüyor.

İlgili AOSP kodu:

MPEG4Writer.cpp on N preview 5 - no HEVC support

MPEG4Writer.cpp on N r1 - HEVC bits and pieces everywhere

Maalesef orada HEVC video kodlama (örneğin Samsung Exynos) destekleyen Marshmallow sahip cihazlar vardır, ama bir MP4 içine atmak için MediaMuxer kullanarak Dosya çalışmaz, bu yüzden özel bir çözüm gereklidir.