Android MediaCodec编码器 - 三星设备的奇怪结果

FTL*_*lph 10 android video-encoding android-hardware galaxy-tab mediacodec

编辑:

似乎问题是这个设备不需要16个维度的多个...但是32的倍数.事实是,我仍然不知道如何确定什么量化为有问题的设备.这似乎使用qcom(我已经看到在Android 4.X上有问题,但这是Android 5.1.1).


我正在Android应用中编码视频.我正在使用Android MediaCodec这样做,将每帧的RGB转换为YUV并传入像素.

我使用的代码已经存在了一段时间,并且适用于我遇到过的任何设备.

一位用户带着一个错误报告来找我说他们的MP4很奇怪.该设备是三星T337A(Galaxy Tab 4).

这是MP4出口的样子:

在此输入图像描述

注 - 出于任何奇怪的原因,它不会在所有分辨率下发生.它确认发生在768x432和1280x720,但不会发生在640x352(例如我的应用程序确保所有分辨率都可以被16整除).

Nexus 5X(使用相同的半平面YUV格式)上,输出适用于所有分辨率.

所以这是该设备的东西,也许是我不知道的其他设备?


我查看了所有输出,它看起来正常并且与我上面提到的Nexus 5X相同(100%的时间都可以工作).

正在使用的MediaCodecInfo是OMX.qcom.video.encoder.avc,使用的颜色格式是2135033992(这是COLOR_FormatYUV420Flexible).所以基本上没什么奇怪的.

代码有点广泛,我会在必要时发布,但只是寻找为什么会发生这种情况的一般想法.我知道它是否更常见,但相同的代码适用于大量其他设​​备,所以一些时髦的东西正在发生......

小智 2

确保使用正确的步幅和缓冲区偏移值