使用IjkMediaPlayer结合surface
来源:互联网 发布:王昱珩 知乎 编辑:程序博客网 时间:2024/06/05 16:32
使用IjkMediaPlayer集合surfaceView播放视频,自己写的播放和暂停按钮
导入依赖
- /*ijkPlayer*/
- // required, enough for most devices.
- compile 'tv.danmaku.ijk.media:ijkplayer-java:0.7.8.1'
- compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.7.8.1'
- // Other ABIs: optional
- compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.7.8.1'
- compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.7.8.1'
- // ExoPlayer as IMediaPlayer: optional, experimental
- compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.7.8.1'
清单文件中加入权限
- <uses-permission android:name="android.permission.INTERNET" />
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="3">
- <SurfaceView
- android:id="@+id/viedo_surface"
- android:layout_width="match_parent"
- android:layout_height="300dp" />
- <Button
- android:id="@+id/start"
- android:layout_alignBottom="@+id/viedo_surface"
- android:text="播放"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
- <Button
- android:layout_alignParentRight="true"
- android:id="@+id/pause"
- android:layout_alignBottom="@+id/viedo_surface"
- android:text=""
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
- </RelativeLayout>
- public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback {
- @BindView(R.id.viedo_surface)
- SurfaceView mSurfaceView;
- @BindView(R.id.start)
- Button start;
- @BindView(R.id.pause)
- Button pause;
- private IjkMediaPlayer mPlayer;
- boolean isPlay;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- ButterKnife.bind(this);
- isPlay = false;
- pause.setEnabled(false);
- mSurfaceView.getHolder().addCallback(this);
- initPlayer();
- }
- private void initPlayer() {
- IjkMediaPlayer.loadLibrariesOnce(null);
- IjkMediaPlayer.native_profileBegin("libijkplayer.so");
- mPlayer = new IjkMediaPlayer();
- /* try {
- //http://ips.ifeng.com/video19.ifeng.com/video09/2014/06/16/1989823-102-086-0009.mp4
- mPlayer.setDataSource("http://ips.ifeng.com/video19.ifeng.com/video09/2014/06/16/1989823-102-086-0009.mp4");
- } catch (IOException e) {
- e.printStackTrace();
- }
- mPlayer.prepareAsync();
- mPlayer.start();*/
- }
- @Override
- public void surfaceCreated(SurfaceHolder holder) {
- mPlayer.setDisplay(holder);
- }
- @Override
- public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
- }
- @Override
- public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
- }
- @OnClick({R.id.start, R.id.pause})
- public void onViewClicked(View view) {
- switch (view.getId()) {
- case R.id.start:
- mPlayer.reset();
- try {
- mPlayer.setDataSource("http://ips.ifeng.com/video19.ifeng.com/video09/2014/06/16/1989823-102-086-0009.mp4");//读取视频文件地址
- mPlayer.prepareAsync(); //预加载视频
- mPlayer.setDisplay(mSurfaceView.getHolder()); //将视频画面输出到surface上
- mPlayer.start(); //开始播放
- pause.setText("暂停"); //pause此时为暂停
- pause.setEnabled(true); //pause按钮此时可用
- isPlay = true;
- }catch (IOException e){
- Toast.makeText(MainActivity.this,"发生错误",Toast.LENGTH_LONG).show();
- }
- break;
- case R.id.pause://点击暂停时候 如果正在播放 就显示继续按钮
- if (isPlay == true) {
- pause.setText("继续");
- mPlayer.pause();
- isPlay = false;
- } else {
- mPlayer.start();
- pause.setText("暂停");
- isPlay = true;
- }
- break;
- }
- }
- }
阅读全文
0 0
- 使用IjkMediaPlayer结合surface
- 使用IjkMediaPlayer结合surface
- 使用IjkMediaPlayer结合surfaceView播放视频,自己写的播放和暂停按钮(四)
- IjkMediaPlayer
- surface使用记录
- 普通应用使用surface
- 使用 的surface缓冲
- IJKMediaPlayer静态库制作
- 使用surface提高绘图速度
- 使用surface显示yuv数据
- Surface
- surface
- Surface
- 普通应用使用Surface的方法
- Android全屏绘制 Surface的使用
- Android surface view 的一些使用
- 使用外部数据创建DirectFB Surface
- 普通应用使用Surface的方法
- 小程序与共享图书的融合
- edmonds-karp算法求最大流
- Sliding Window Maximum:将每次滑动窗口内的最值保存
- 项目测试
- Inverted Signs Gym-101522I
- 使用IjkMediaPlayer结合surface
- 浅谈oracle优化中物化视图的查询重写
- 关于codeforces比赛规则介绍
- 图的遍历与最小生成树
- 博弈问题总集第三类----Staircase Nim
- [JZOJ5495]【清华集训2017模拟12.09】MiniumCut
- CSDN-markdown编辑器教程
- 配置远程maven仓库
- 搭建 FTP 文件服务