Skip to content

scaleVideo

xinbaicheng edited this page Feb 13, 2017 · 10 revisions

软解

播放器类KSYMediaPlayer提供接口 setVideoScalingMode,可以设置视频画面填充方式

/**
 * 填充模式,视频宽高比例与手机频幕宽高比例不一致时,使用此模式视频播放会有黑边
 */
public int VIDEO_SCALING_MODE_SCALE_TO_FIT;
/**
 * 裁剪模式,视频宽高比例与手机频幕宽高比例不一致时,使用此模式视频播放会有裁剪
 */
public int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING;
/**
 * 版本要求:SDK v1.7.2及以上
 * 全屏模式,视频宽高比例与手机频幕宽高比例不一致时,使用此模式视频播放会有画面拉伸
 */
public int VIDEO_SCALING_MODE_NOSCALE_TO_FIT;

基本调用示例

KSYMediaPlayer player = KSYMediaPlayer.Builder(mContext).build();

// 填充模式
player.setVideoScalingMode(KSYMediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT);
// 裁剪模式
player.setVideoScalingMode(KSYMediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
// 全屏模式(1.7.2及以上版本)  
player.setVideoScalingMode(KSYMediaPlayer.VIDEO_SCALING_MODE_NOSCALE_TO_FIT);

调用时机:

  1. onPrepared回调时
  2. 屏幕旋转时

硬解

KSYTextureView

使用硬解功能时建议使用KSYTextureView
它提供了与KSYMediaPlayer一致的接口,并能在硬解时实现旋转、缩放、截图等功能

使用方法

播放器的部分布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/player_black">

    <com.ksyun.media.player.KSYTextureView
        android:id="@+id/player_surface"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"/>

</RelativeLayout>

播放器的部分代码

private KSYTextureView mVideoSurfaceView;
mVideoSurfaceView = (KSYTextureView) findViewById(R.id.player_surface);

private IMediaPlayer.OnPreparedListener mOnPreparedListener = new IMediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(IMediaPlayer mp) {
            if (mVideoSurfaceView != null) {
                    mVideoSurfaceView.setVideoScalingMode(KSYMediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);

                mVideoSurfaceView.start();
            }
}
Clone this wiki locally