java-为什么ExtractMpegFramesTest不适用于旋转的输入文件?

java-为什么ExtractMpegFramesTest不适用于旋转的输入文件?,第1张

概述我开始解码/编码应用程序的视频,似乎BigFlake’ssite是工作视频代码的权威参考.我已将ExtractMpegFramesTest_egl14.java复制到我的项目中,并对其进行了修改,以使用其他文件路径,但除此之外没有其他 *** 作.它可以从我复制到设备中的预录制视频中正确提取帧.但是,当尝试将其与从设备

我开始解码/编码应用程序的视频,似乎BigFlake’s site是工作视频代码的权威参考.我已将ExtractMpegFramesTest_egl14.java复制到我的项目中,并对其进行了修改,以使用其他文件路径,但除此之外没有其他 *** 作.它可以从我复制到设备中的预录制视频中正确提取帧.但是,当尝试将其与从设备的摄像机录制的视频一起使用时,我得到的帧只是水平线:

测试了不同的录制视频后,我意识到问题出在旋转的视频上.设备的摄像机对来自帧缓冲区的帧进行编码,然后在视频上拍一个旋转标签.这可以从MediaFormat对象中提取:

int rotation = format.getInteger("rotation-degrees");

不幸的是,交换已保存图像的宽度/高度不会改变任何内容,图像仍然会损坏.为了正确处理旋转的帧,必须对保存代码执行什么 *** 作?

解决方法:

正如source code comment pointed out by another answer所暗示的那样,OpenGL需要转换图像.原始的反转布尔值可用于尚未旋转或旋转180度的源.但是其他方向(90和270)将显示翻转的图像,因此也必须翻转它们.

这是我为正确处理旋转所做的更改:

>从源媒体读取“旋转度”属性(如果可用).
>修改CodecOutputSurface构造函数以接受数字旋转参数,该参数存储在mRotation实例变量中.
>修改旋转为0或180时要使用的原始反转码.
>当旋转角度为90或270时,请使用其他矩阵变换.

您可以从the following gist获取完整的修改版本,并查看上面提到的individual changes.

总结

以上是内存溢出为你收集整理的java-为什么ExtractMpegFramesTest不适用于旋转的输入文件?全部内容,希望文章能够帮你解决java-为什么ExtractMpegFramesTest不适用于旋转的输入文件?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1120808.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存