展会信息港展会大全

android mediaplayer 视频修改视频大小屏幕尺寸
来源:互联网   发布日期:2015-09-29 10:19:21   浏览:4375次  

导读:1 主要是通过更改view 的大小来改变视频的大� �2 在视频初始化时获得视频的高宽都为0 ,这个必须要注意,必须播放后延时 修改view 大小3 sufaceview 的布局类是 android.widget.LinearLayout.LayoutPa......

1 主要是通过更改view 的大小来改变视频的大校

2 在视频初始化时获得视频的高宽都为0 ,这个必须要注意,必须播放后延时 修改view 大小

3 sufaceview 的布局类是 android.widget.LinearLayout.LayoutParams 这个必须注意(在设置布局时一定要注意父对象的类型)

4 在 sufaceview surfaceChanged事件中加入 mediaPlayer.setDisplay(arg0) ,setDisplay 方法在任意时刻都是可以调用的

try {

Log.e("m3u8", mediapath);

mediaPlayer = new MediaPlayer();

// 开始准备播放

uiHandler.sendMessage(uiHandler

.obtainMessage(MediaPlayerMessage.PREPARE));

// 设置媒体的路径

mediaPlayer.setDataSource(mediapath);

// 设置边播放变缓冲

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

mediaPlayer.prepareAsync();

} catch (Exception e) {

// TODO: handle exception

Log.e("meidaplayer err ", e.toString());

}

/**

* 播放器异常事件

*/

mediaPlayer.setOnErrorListener(new OnErrorListener() {

@Override

public boolean onError(MediaPlayer mp, int what, int extra) {

// TODO Auto-generated method stub

mediaPlayer.release();

return false;

}

});

//视频准备完成 可以播放

mediaPlayer.setOnPreparedListener(new OnPreparedListener() {

@Override

public void onPrepared(MediaPlayer mp) {

// TODO Auto-generated method stub

try {

mp.start();

//给ui 界面发送消息 这里有个延时是设置 如果不设置延时 会出现 获得视频的高宽为零的文件

uiHandler.sendEmptyMessageDelayed(MediaPlayerMessage.SETSIZE, 1000);

} catch (Exception e) {

// TODO: handle exception

Log.e("start mediaplayer", e.toString());

}

}

});

case MediaPlayerMessage.SETSIZE:

int mVideoWidth = mediaPlayerView.mediaPlayer.getVideoWidth();

int mVideoHeight = mediaPlayerView.mediaPlayer.getVideoHeight();

int width=_frameLayout_main.getWidth();

int height=_frameLayout_main.getHeight();

android.widget.LinearLayout.LayoutParams sufaceviewParams = (android.widget.LinearLayout.LayoutParams) mediapaly_sufaceview

.getLayoutParams();if ( mVideoWidth * height> width * mVideoHeight ) {

//Log.i("@@@", "image too tall, correcting");

sufaceviewParams.height = width * mVideoHeight / mVideoWidth;

} else if ( mVideoWidth * height< width * mVideoHeight ) {

//Log.i("@@@", "image too wide, correcting");

sufaceviewParams.width = height * mVideoWidth / mVideoHeight;

}else{

sufaceviewParams.height=height;

sufaceviewParams.width = width;

}

sufaceviewParams.gravity=Gravity.CENTER;

mediapaly_sufaceview.setLayoutParams(sufaceviewParams);

break;

//更在 surface 大小后事件@Override

public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {

// TODO Auto-generated method stub

Log.e("Surface h w", String.valueOf(arg2) + " " + String.valueOf(arg3));

if (mediaPlayer != null) {

mediaPlayer.setDisplay(arg0);}

}

赞助本站

人工智能实验室

相关热词: 视频 尺寸 修改 大小

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港