1

我正在关注ExtractMpegFramesTest帖子以从视频中提取 PNG 帧。这适用于以横向模式录制的视频,但不适用于以纵向模式录制的视频。

有人知道如何使用上面链接中提供的解决方案从肖像视频中生成 PNG 帧吗?

我已经用 720p 和 1080p 视频对此进行了测试。

我观察到的几件事是,

MediaExtractor 提供 720p 视频的宽度和高度 1280 和 720,无论方向如何。这应该是横向 1280 x 720 和纵向 720 x 1280。1080p 视频中的类似情况。

另一件事是当我在方法 drawFrame in invert 参数中传递 false 时,PNG 帧很好,但颠倒了。

编辑:

使用 ExtractMpegFramesTest 我得到了这个结果

具有反转参数 true 的横向视频提供完美的图像 http://postimg.org/image/qdliypuj5/

反转参数为 true 的人像视频会产生失真的图像 http://postimg.org/image/vfb7dwvdx/

具有反转参数 false 的肖像视频提供了完美的倒置图像。(根据@Peter Tran 的回答输出可以通过旋转位图来修复。) http://postimg.org/image/p7km4iimf/

4

1 回答 1

1

在评论中的ExtractMpegFramesTestsaveFrame中,它指出

       // 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之前反转位图。这可以通过对位图应用一个矩阵(带有 preScale)来完成。您需要在saveFrame调用bmp.copyPixelsFromBuffer.

请参阅此答案以镜像位图;并用于preScale(-1,1)在正确的轴上反转图像。

于 2015-04-25T06:52:29.133 回答