1

rtspの再生にはvitamioライブラリを使用しました。私はvideoView.start();自分のコードを持っていますが、ビデオはバッファリングが完了してから 1 分後に再生を開始します!

しかし、バッファリングが完了した後に向きを変更すると、ビデオがすぐに再生されます! 次のコードがあり、向きを変更するとこのメソッドが呼び出されることがわかっています。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    if (videoView != null)
        videoView.setVideoLayout(VideoView.VIDEO_LAYOUT_SCALE, 0);
    super.onConfigurationChanged(newConfig);
}

しかし、何がビデオを開始するのか正確にはわかりません。向きを変更する以外の方法で(バッファリングが完了した直後に)強制的に再生を開始することはできません。助けてください...

4

1 に答える 1

0

VideoViewのサイズが0の場合、ビデオが再生されないことを経験しました。必ず初期寸法を設定してください。

さらに、最初からレイアウトを設定してみます。 videoView.setVideoLayout(VideoView.VIDEO_LAYOUT_SCALE, 0);

oncVideoSizeChangedコールバックを受信した後、ディメンションを設定します。

public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {

            FrameLayout.LayoutParams vLayout = (FrameLayout.LayoutParams) mSurfaceView.getLayoutParams();
            vLayout.width = getWindowManager().getDefaultDisplay().getWidth();
            vLayout.height = getWindowManager().getDefaultDisplay().getHeight();

            float aspectRatio = (float) width / height;
            float screenRatio = (float) vLayout.width / vLayout.height;
            float topMargin = 0, leftMargin = 0;

            if (screenRatio < aspectRatio)
                topMargin = (float) vLayout.height
                        - ((float) vLayout.width / aspectRatio);
            else if (screenRatio > aspectRatio)
                leftMargin = (float) vLayout.width - (vLayout.height * aspectRatio);

            vLayout.setMargins((int) leftMargin, (int) topMargin, 0, 0);
            mSurfaceView.setLayoutParams(vLayout);
        }
于 2012-12-30T10:14:48.460 に答える