gpt4 book ai didi

android - 多个 MediaCodec 实例

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:46:31 25 4
gpt4 key购买 nike

我使用 MediaCodec 库制作了一个视频播放器,我想添加一个播放列表功能。我试图有两个 MediaCodec 实例,以便在两个连续视频之间进行更平滑的过渡,但这似乎很危险,在某些设备中(我尝试了带有氰基的 S4)它工作得很好,但是在带有 TouchWiz 的 S4 中相同代码在 Media Codec 声明中崩溃。这是代码 fragment :

 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 上得到的异常(exception)是

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)

任何人都可以指出一些关于如何正确执行此操作的指南吗?也许不同的线程?我真的很想在不同的视频之间进行平滑过渡,但我需要它至少在某些设备上始终如一地工作。

非常感谢

最佳答案

根据我的经验,当没有足够的资源来创建同一编解码器的两个实例时,就会出现您的问题。例如,当我尝试并行配置两个 1080p、h264 解码器时,我在 S3 上得到了它,但是有一个 720p 和一个 1080p,或者两个 720p 解码器,运行得很好。你可以做什么,尽管没有完美的解决方案:

  • 很明显,在那些情况下,等待第一个编解码器完成,然后才配置第二个编解码器。

  • 在解码器列表中搜索同一文件的替代解码器。这可能在某些设备上有效,但在其他设备上无效,或者它只是找到一个可能无法实时解码的 sw 解码器(如 S3 上的情况)

关于android - 多个 MediaCodec 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19716040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com