Android 多媒体应用——MediaPlayer与SurfaceView播放视频
来源:互联网 发布:photoshopcs4软件下载 编辑:程序博客网 时间:2024/06/11 14:03
MediaPlayer大家一定不陌生,可以用于播放视频和音频。之前我们已经在《Android 多媒体应用——MediaPlayer音频播放 》文章中讲过MediaPlayer播放音频了,今天来看MediaPlayer播放视频。
MediaPlayer播放视频需要与SurfaceView配合使用。
SurfaceView
SurfaceView可以直接从内存或者DMA等硬件接口取得图像数据。它的特点是:SurfaceView有自己的绘制线程,它的绘制是独立于主线程的,不依靠主线程。SurfaceView依靠自己的绘制线程绘制图像。也就是说它可以在主线程之外的线程中向屏幕绘图上。这样可以避免画图任务繁重的时候造成主线程阻塞,从而提高了程序的反应速度。在游戏开发中多用到SurfaceView,游戏中的背景、人物、动画等等尽量在画布canvas中画出。
SurfaceView的使用是很广泛的,这里我们主要先学习它与MediaPlayer搭配实现视频的播放。
视频播放
1. 首先在布局中定义SurfaceView。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <Button android:id="@+id/button_surface" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="播放视频"/> <SurfaceView android:id="@+id/surface" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>
2. Activity中获得SurfaceView的对象。
3. 获得MediaPlayer的对象。
4. 获得视频的来源,通过调用方法setDataSource(String path)。
5. 设置视频的输出方式,通过调用方法setAudioStreamType(int streamtype)。
6. 调用setDisplay(SurfaceHolder sh)方法,设置视频在SrufaceView中显示。
7. 调用prepare()方法,准备播放视频。
8. 调用start(), stop(), pause()等方法对视频的播放进行操作。
public class MainActivity extends Activity { private Button mButtonSurace; private SurfaceView mSurfaceView; private MediaPlayer player; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButtonSurace = (Button) findViewById(R.id.button_surface); mSurfaceView = (SurfaceView) findViewById(R.id.surface); mButtonSurace.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (player == null) { player = new MediaPlayer(); } player.reset();//复位 try { player.setDataSource(Environment.getExternalStorageDirectory() + "/xiaoxian.3gp");//设置播放的视频资源 player.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置视频的输出形式。 player.setDisplay(mSurfaceView.getHolder());//设置在SurfaceView中显示 player.prepare();//准备 player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.start();//视频准备完成后,开始播放 } }); } catch (IOException e) { e.printStackTrace(); } } }); }}
- Android 多媒体应用——MediaPlayer与SurfaceView播放视频
- Android 多媒体应用:视频播放之VideoView与SurfaceView
- Android 多媒体应用:视频播放之VideoView与SurfaceView
- Android多媒体---SurfaceView(播放视频)+Mediaplayer(音频)
- 多媒体之播放视频——VideoView和MediaPlayer(MediaPlayer和SurfaceView结合)
- android开发笔记之多媒体—MediaPlayer + SurfaceView播放视频
- android视频播放MediaPlayer+SurfaceView
- Android 多媒体应用——MediaPlayer音频播放
- Android 使用MediaPlayer与SurfaceView进行视频播放
- Android多媒体开发【1】-- 利用SurfaceView + MediaPlayer开发最简单的视频播放器
- Android -- 视频音频多媒体播放,在线播放, MediaPlayer, SurfaceView, SoundPool, Timer定时器使用
- Android多媒体开发【1】-- 利用SurfaceView + MediaPlayer开发最简单的视频播放器
- Android -- 视频音频多媒体播放,在线播放, MediaPlayer, SurfaceView, SoundPool, Timer定时器使用
- 多媒体(视频播放器)Mediaplayer+SurfaceView+Seekbar
- Android SurfaceView + MediaPlayer实现视频播放器
- android MediaPlayer SurfaceView 网络视频播放器
- Android 播放视频(一)SurfaceView + MediaPlayer
- Android MediaPlayer+SurfaceView实现视频播放
- Excel Sheet Column Title
- AndroidStudio导入库文件
- C++Primer第五版 8.1.2节练习
- 2015各地高温补贴发放标准时间一览表
- hdu2009
- Android 多媒体应用——MediaPlayer与SurfaceView播放视频
- 解答:为什么蚊子咬的包会痒痒
- Rotate Array
- vsftpd 搭建和虚拟用户配置
- C++Primer第五版 8.2.1节练习
- 0915Android基础摄像头
- Effective Water Simulation from Physical Models
- 【特种兵PPT教程】拿什么来拯救你的PPT文件?——Ctrl+S
- LeetCode-Contains Duplicate II