Android设备是否可以使用MediaCodec可靠地执行视频解码编码?
我制作了一个Encode Decode系统,该系统可以将1080p的视频连接在一起。它同时使用两个MediaCodec实例,中间使用一个GLES曲面(以便更轻松地交换输入编解码器并添加一些效果)。
我在不同的> API21设备上进行了测试。所有测试均使用相同设备,相同编解码器配置制作的视频执行(因此,所有测试均使用受支持的视频编解码器进行-所有测试均使用h.264编码)。
它在许多设备上都能正常工作,但是:
在“拼接点”之后存在编码伪像。输出视频的帧分析显示,PTS中靠近拼接点的错误(更长或更短的帧时间)。这些伪影可能是由于播放器解码了编码错误的视频(存在PST错误)引起的
在少数设备上,所产生的视频在技术上是完美的(帧或编码中没有错误),但视频本身是完全错误的,仅包含损坏的帧(有时会部分裁剪屏幕)。这里看起来像解码(解码)时视频不成功。
在任何情况下都不会显示错误,也不会显示日志。所有设备都完全能够对初始视频进行编码,并且所有设备都能够播放这些视频。但是,看起来这些设备无法同时处理编码和解码。
这可能吗?如果底层架构正在执行无法成功执行的任务,那么MediaCodec能否实现为不会抛出异常?