JCodec 位图到 mp4 - 结果视频失真

JCodec bitmap to mp4 - distortion in result video

当我尝试使用 JCodec 将单个位图转换为 10 秒长的视频时 - 有时我会得到奇怪的结果,通常是颜色失真 - 或者在结果视频上绘制一条黑色对角线。 这是我使用的代码(我调试了它,问题出现在那里):

SequenceEncoder enc = new SequenceEncoder(f);
for (int x = 0; x < 250; x++) {
     Log.d("frame", "" + x);
     enc.encodeImage(bitmap);
     publishProgress(pb, 1);
}
enc.finish();

以下是这两个问题的示例(用红色箭头标记):

原图:

渲染后:

久违的谜团终于解开了。

如果位图的高度或宽度不是偶数,就会出现失真。 android 的 JCodec 在使用像这样的位图时不会触发任何错误,因为普通的 Jcodec 会触发非法参数异常。

解决方案 : 在编码之前将位图大小调整为可被 2 整除的大小。