1

ExtractMpegFramesTestの投稿に従って、ビデオから PNG フレームを抽出しています。これは、横向きモードで録画されたビデオでは正常に機能しますが、縦向きモードで録画されたビデオでは機能しません。

上記のリンクで提供されているソリューションを使用して、ポートレート ビデオから PNG フレームを生成する方法を知っている人はいますか?

720p と 1080p のビデオでこれをテストしました。

私が観察したいくつかのことは、

MediaExtractor は、方向に関係なく、720p ビデオの幅と高さを 1280 と 720 にします。これは、横向きで 1280 x 720、縦向きで 720 x 1280 である必要があります。1080p ビデオでも同様のケースです。

その他のことは、invert パラメータのメソッド drawFrame で false を渡すと、PNG フレームは問題ありませんが、上下が逆になります。

編集:

ExtractMpegFramesTest を使用すると、この結果が得られます

invert パラメータが true の横向きビデオは完璧な画像 http://postimg.org/image/qdliypuj5/を提供します

invert パラメータが true のポートレート ビデオは、歪んだ画像を 生成しますhttp://postimg.org/image/vfb7dwvdx/

invert パラメータ false を使用したポートレート ビデオは、完全な逆さまのイメージを提供します (@Peter Tran の回答によると、出力はビットマップを回転させることで修正できます )

4

1 に答える 1

1

のコメントの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に保存する前にビットマップを反転する必要があるようです。これは、ビットマップにマトリックス (preScale を使用) を適用することで実行できます。saveFrameへの呼び出しの後にのコードを変更する必要がありますbmp.copyPixelsFromBuffer

ビットマップのミラーリングについては、この回答を参照してください。preScale(-1,1)正しい軸で画像を反転するために使用します。

于 2015-04-25T06:52:29.133 に答える