5

ビデオを引き伸ばさずに、このフルスクリーンビデオビューで再生中のビデオのサイズを変更する方法を学びました。

gameowner答えがあれば、それは機能します。また、側面に黒い縞模様ができるように、アスペクトラジオを維持する必要があります。

オプションでもう一つ欲しいです。つまり、側面に黒い縞模様を入れたくないということです。ビデオの高さが画面の高さのままであることを望みます。アスペクト ラジオを維持するには、ビデオの幅を画面の幅より大きくする必要があります。動画の「一番左部分」「一番右部分」が見れなくても構いません。私は次のように変更する必要があると思います:

if (videoProportion > screenProportion) {
        lp.width = screenWidth;
        lp.height = (int) ((float) screenWidth / videoProportion);
} else {
        lp.width = (int) (videoProportion * (float) screenHeight);
        lp.height = screenHeight;
}

if (videoProportion < screenProportion) {
        lp.width = screenWidth;
        lp.height = (int) ((float) screenWidth / videoProportion);
} else {
        lp.width = (int) (videoProportion * (float) screenHeight);
        lp.height = screenHeight;
}

大丈夫でしょうが、私はしませんでした。サイズがsurfaceView画面よりも大きい場合。これは黒い画面を表示するだけですが、オーディオの再生を続けます。

また、surfaceview holder の固定サイズも考慮に入れようとしています。

surfaceViewFrame.getHolder().setFixedSize(lp.width, lp.height);

しかし、それは問題を解決しません。画面より大きいサイズの動画を再生することはできますか?

編集:わかりました。私は私の質問の言葉に気づきました。ビデオをアスペクトラジオでズームインしたいのですが、フルスクリーンでズームインしたいと思います。ビデオをフルスクリーンにトリミングとも呼ばれます。

(必須 TextureViewの) コンテナー内で使用しようとしました: Playing video on TextureView この回避策で正常に動作する Android 4.0 デバイスを持っていますが、他の 4.0 デバイスで実際に動作するかどうかはわかりません。また、Android 4.0 以上のみです。Android 2.x の回避策があれば幸いです。FrameLayoutTextureView

4

0 に答える 0