小编roi*_*ola的帖子

多个MediaCodec实例

我使用MediaCodec库制作了一个视频播放器,我想添加一个播放列表功能.我试图有两个MediaCodec实例,以便在两个连续的视频之间进行更平滑的过渡,但是这似乎很危险,在某些设备中(我尝试使用带有氰的S4)它完美地工作,但是在S4中使用TouchWiz同样如此代码在媒体编解码器声明中崩溃.这是代码片段:

 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);
Run Code Online (Sandbox Code Playgroud)

我在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)
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出一些如何正确做到这一点的指导方针吗?也许不同的线程?我真的想在不同视频之间进行平滑过渡,但我需要它至少在某些设备上一致地工作.

非常感谢

android mediacodec

5
推荐指数
1
解决办法
3161
查看次数

MediaCodec 和输出格式

我正在尝试使用 MediaDecoder 类编写视频播放器,我遇到了一个问题,它阻止了我的开发,

这是一个代码片段

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

MediaFormat format = extractor.getTrackFormat(i);
extractor.selectTrack(0);

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

decoder.start();

ByteBuffer[] inputBuffers = decoder.getInputBuffers();
ByteBuffer[] outputBuffers = decoder.getOutputBuffers();

Log.d(TAG, " "+decoder.getOutputFormat());
Run Code Online (Sandbox Code Playgroud)

问题是每个设备打印的输出格式都会发生变化,因此无法将其打印到 Open GL 纹理。

有没有办法强制解码器始终输出相同的格式?如果没有,有没有人知道任何可以进行转换的库?

非常感谢您的任何见解

android android-mediacodec

2
推荐指数
1
解决办法
3360
查看次数

标签 统计

android ×2

android-mediacodec ×1

mediacodec ×1