ExtractMpegFramesTest 在 android 中以纵向模式录制的视频存在问题
ExtractMpegFramesTest having issue with video recorded in portrait mode in android
我正在关注 ExtractMpegFramesTest post 从视频中提取 PNG 帧。
这适用于以横向模式录制的视频,但不适用于以纵向模式录制的视频。
有谁知道如何使用上面提供的解决方案从肖像视频生成 PNG 帧 link?
我已经用 720p 和 1080p 视频对此进行了测试。
我观察到的两件事是,
无论方向如何,MediaExtractor 都会给出 720p 视频的宽度和高度 1280 和 720。横向应为 1280 x 720,纵向应为 720 x 1280。 1080p 视频中的类似情况。
另一件事是当我在方法 drawFrame 的 invert 参数中传递 false 时,PNG 框架很好但颠倒了。
编辑:
使用 ExtractMpegFramesTest 我得到了这个结果
带有反转参数 true 的风景视频给出了完美的图像
http://postimg.org/image/qdliypuj5/
反转参数为 true 的纵向视频会产生扭曲的图像
http://postimg.org/image/vfb7dwvdx/
带反转参数 false 的肖像视频给出了完美的颠倒图像。(根据@Peter Tran 的回答输出可以通过旋转位图来修复。)
http://postimg.org/image/p7km4iimf/
在 ExtractMpegFramesTest saveFrame
的评论中,它指出
// Making this even more interesting is the upside-down nature of GL, which means
// our output will look upside-down relative to what appears on screen if the
// typical GL conventions are used. (For ExtractMpegFrameTest, we avoid the issue
// by inverting the frame when we render it.)
这就是您提到的 drawFrame
的布尔参数的原因。
听起来您想要做的是在保存为 PNG 之前反转位图。这可以通过将矩阵(带预缩放)应用于位图来完成。在调用 bmp.copyPixelsFromBuffer
.
之后,您需要修改 saveFrame
中的代码
请参考这篇answer for mirroring a bitmap;并使用 preScale(-1,1)
在正确的轴上反转图像。
我正在关注 ExtractMpegFramesTest post 从视频中提取 PNG 帧。 这适用于以横向模式录制的视频,但不适用于以纵向模式录制的视频。
有谁知道如何使用上面提供的解决方案从肖像视频生成 PNG 帧 link?
我已经用 720p 和 1080p 视频对此进行了测试。
我观察到的两件事是,
无论方向如何,MediaExtractor 都会给出 720p 视频的宽度和高度 1280 和 720。横向应为 1280 x 720,纵向应为 720 x 1280。 1080p 视频中的类似情况。
另一件事是当我在方法 drawFrame 的 invert 参数中传递 false 时,PNG 框架很好但颠倒了。
编辑:
使用 ExtractMpegFramesTest 我得到了这个结果
带有反转参数 true 的风景视频给出了完美的图像 http://postimg.org/image/qdliypuj5/
反转参数为 true 的纵向视频会产生扭曲的图像 http://postimg.org/image/vfb7dwvdx/
带反转参数 false 的肖像视频给出了完美的颠倒图像。(根据@Peter Tran 的回答输出可以通过旋转位图来修复。) http://postimg.org/image/p7km4iimf/
在 ExtractMpegFramesTest saveFrame
的评论中,它指出
// Making this even more interesting is the upside-down nature of GL, which means // our output will look upside-down relative to what appears on screen if the // typical GL conventions are used. (For ExtractMpegFrameTest, we avoid the issue // by inverting the frame when we render it.)
这就是您提到的 drawFrame
的布尔参数的原因。
听起来您想要做的是在保存为 PNG 之前反转位图。这可以通过将矩阵(带预缩放)应用于位图来完成。在调用 bmp.copyPixelsFromBuffer
.
saveFrame
中的代码
请参考这篇answer for mirroring a bitmap;并使用 preScale(-1,1)
在正确的轴上反转图像。