Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android JCodec位图到mp4-结果视频中的失真_Android_Video_Mp4_Jcodec - Fatal编程技术网

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

Android JCodec位图到mp4-结果视频中的失真,android,video,mp4,jcodec,Android,Video,Mp4,Jcodec,当我试图用JCodec将一个位图转换成10秒长的视频时——有时我会得到一个奇怪的结果,通常是颜色失真——或者在结果视频上画一条黑色对角线。 下面是我使用的代码(我调试了它,问题就出现在那里): SequenceEnc=新的SequenceEncoder(f); 对于(int x=0;x

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

SequenceEnc=新的SequenceEncoder(f);
对于(int x=0;x<250;x++){
对数d(“帧”和“+x”);
编码图像(位图);
出版进度(pb,1);
}
附件表面处理();
以下是两个问题的示例(用红色箭头标记):

原始图片:

渲染后:

经过很长一段时间,谜团终于解开了

如果位图的高度或宽度不是偶数,则会出现失真。 android版JCodec在使用这样的位图时不会触发任何错误,正常情况下,JCodec会触发非法参数异常


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

您尝试过不同的图像格式吗?如果您将输入图片编码为
.jpg
.png
.bmp
。。。这些格式中有一种能提供更好的视频效果吗?还没有尝试过,我会在这里尝试并更新。找到解决方案了吗?我被这个问题困住了。我还没有找到一个足够的解决方案。但我注意到,当输入图像更饱和时,这种情况发生得更少。。
SequenceEncoder enc = new SequenceEncoder(f);
for (int x = 0; x < 250; x++) {
     Log.d("frame", "" + x);
     enc.encodeImage(bitmap);
     publishProgress(pb, 1);
}
enc.finish();