2011-06-07 14 views
5

Tôi đang sử dụng bản trình diễn Android MediaPlayer cho Video. Tôi có video trực tuyến 640x480. Tôi chỉ đơn giản muốn video được lớn như nó có thể được (trong bất kỳ định hướng thiết bị) trong khi vẫn giữ tỷ lệ khía cạnh. Tôi không thể làm điều đó. Nó chỉ đơn giản là trải dài trên toàn bộ màn hình. SurfaceView của tôi trong bố cục không duy trì tỷ lệ cỡ ảnh trong "fill_parent" hoặc "wrap_content". Khi tôi kiểm tra (và thay đổi kích thước bề mặt trong mã, nó dường như bỏ qua bất kỳ thay đổi Và những gì là lạ là tôi đang nói trong mã này mà kích thước video của tôi là:. 176 x 144.Android Streaming Video - Cần tỷ lệ khung hình

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(); 
    } 
} 

Đây là nơi tôi cố gắng và thay đổi kích thước:

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

Suy nghĩ

Trả lời

0

cố gắng sử dụng setLayoutParams() trong OnPrepared()

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