@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//下面开始实例化MediaPlayer对象
final MediaPlayer player = new MediaPlayer();
//设置数据数据源,也就播放文件地址,可以是网络地址
String dataPath = Environment.getExternalStorageDirectory().getPath()+"/abc.mp4";
try {
player.setDataSource(dataPath);
} catch (Exception e) {
e.printStackTrace();
}
//只有当播放器准备好了之后才能够播放,所以播放的出发只能在触发了prepare之后
player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
player.start();
}
});
/*
向player中设置dispay,也就是SurfaceHolder。
但此时有可能SurfaceView还没有创建成功,所以需要监听SurfaceView的创建事件
*/
SurfaceView surfaceView = (SurfaceView)this.findViewById(R.id.surfaceView);
surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
//将播放器和SurfaceView关联起来
player.setDisplay(holder);
//异步缓冲当前视频文件,也有一个同步接口
player.prepareAsync();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
}
Android使用MediaPlayer播放视频的基本逻辑
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 成长记录-连载(三十六) ——我的第一篇五千字长文,说了什么,你一定想不到 并不是不想每天写公众号,而是之前思考怎...
- iOS 做视频播放器的时候有一个很大的坑,就是系统的自带的播放器有很大的限制,有些格式的视频无法播放 这个时候我们...
- 列表中视频播放采用MediaPlayer+TextureView 熟悉MP的状态图:-重复利用MP,需先reset...
- 大家好我是拓维模型推广员小谢,相信大家最初看到标题就点了进来。觉得这是一件不可思议的事情。起初没有参加投脑智...
- 来自插件大厂红巨星的调色滤镜。 提到调色,应该是PS众多功能中最常用的一种了,甚至在很多小伙伴心中都有着“PS=调...