我使用 MediaCodec 库制作了一个视频播放器,我想添加一个播放列表功能。我尝试拥有两个 MediaCodec 实例,以便在两个连续视频之间进行更平滑的过渡,但这似乎很危险,在某些设备中(我尝试了带有氰的 S4)它运行良好,但是在带有 TouchWiz 的 S4 中相同代码在媒体编解码器声明中崩溃。这是代码片段:
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);
我在 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)
谁能给我一些关于如何正确执行此操作的指南?也许不同的线程?我真的很想在不同视频之间进行平滑过渡,但我需要它至少在某些设备上能够始终如一地工作。
非常感谢