Android потоковое видео - нужно соотношение сторон - PullRequest
5 голосов
/ 07 июня 2011

Я использую демо Android MediaPlayer для видео.У меня есть потоковое видео 640x480.Я просто хочу, чтобы видео было настолько большим, насколько оно может быть (при любой ориентации устройства) при сохранении соотношения сторон.Я не могу заставить это сделать это.Он просто простирается по всему экрану.Мой SurfaceView в макете не поддерживает соотношение сторон ни в «fill_parent», ни в «wrap_content».Когда я проверяю (и изменяю размер поверхности в коде, он, кажется, игнорирует любые изменения. И что странно, мне говорят в этом коде, что мой размер видео: 176 x 144.

public void onVideoSizeChanged(MediaPlayer mp, int width, int height) 
{
    Log.v(TAG, "onVideoSizeChanged called");
    Log.v(TAG, "Surface Width: " + width + " Surface Height: " + height);
    if (width == 0 || height == 0) {
        Log.e(TAG, "invalid video width(" + width + ") or height(" + height + ")");
        return;
    }
    mIsVideoSizeKnown = true;
    mVideoWidth = width;
    mVideoHeight = height;

    mVideoWidth = mp.getVideoWidth();
    mVideoHeight = mp.getVideoHeight();
    Log.v(TAG, "Surface Width: " + mVideoWidth + " Surface Height: " + mVideoHeight);
    if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) {
        startVideoPlayback();
    }
}

где я пытаюсь изменить размер:

private void startVideoPlayback() {
    Log.v(TAG, "startVideoPlayback");
    holder.setFixedSize(mVideoWidth, mVideoHeight);
    mMediaPlayer.start();
}

Мысли?

1 Ответ

0 голосов
/ 01 июля 2011

попробуйте использовать setLayoutParams () в OnPrepared ()

public void onPrepared(MediaPlayer mp) {
   ...
   mSurfaceView.setLayoutParams(new LinearLayout.LayoutParams(vWidth, vHeight));
   ...
};
...