饺子播放器
一、加入依赖

implementation 'cn.jzvd:jiaozivideoplayer:6.2.4'

二、视频横竖屏切换 需要在清单文件中设置属性

<activity            android:name=".JiaoZiplayerActivity"            android:configChanges="orientation|screenSize|keyboardHidden"            android:screenOrientation="portrait" />

三、播放

private void initView() {        jps.setUp("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4",                JZVideoPlayerStandard.SCREEN_WINDOW_NORMAL,                "狮子王");        jps.thumbImageView.setImageURI(Uri.parse("https://images0.cnblogs.com/blog/651487/201501/281616176915467.jpg"));        new Thread(new Runnable() {            @Override            public void run() {                final Bitmap bitmap = createVideoThumbnail("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4", jps.thumbImageView.getMaxWidth(),jps.thumbImageView.getMaxHeight());                runOnUiThread(new Runnable() {                    @Override                    public void run() {                        jps.thumbImageView.setImageBitmap(bitmap);                    }                });            }        }).start();        jps.widthRatio = 4;        jps.heightRatio = 3;        //设置全屏播放        JZVideoPlayer.FULLSCREEN_ORIENTATION = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;  //横向        JZVideoPlayer.NORMAL_ORIENTATION = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;  //纵向    }

四、如果需要视频封面 可以封装工具类 截取特定帧

 //获取视频的第一帧作为视频的缩略图(网络视频):    @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)    private Bitmap createVideoThumbnail(String url, int width, int height) {        Bitmap bitmap = null;        MediaMetadataRetriever retriever = new MediaMetadataRetriever();        int kind = MediaStore.Video.Thumbnails.MINI_KIND;        try {            if (Build.VERSION.SDK_INT >= 14) {                retriever.setDataSource(url, new HashMap<String, String>());            } else {                retriever.setDataSource(url);            }            bitmap = retriever.getFrameAtTime();        } catch (IllegalArgumentException ex) {            // 假设这是一个损坏的视频文件        } catch (RuntimeException ex) {            //假设这是一个损坏的视频文件        } finally {            try {                retriever.release();            } catch (RuntimeException ex) {                // 清理时忽略故障            }        }        if (kind == MediaStore.Images.Thumbnails.MICRO_KIND && bitmap != null) {            bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);        }        return bitmap;    }

五、健壮性 及时清理

 @Override    public void onBackPressed() {        if (JZVideoPlayerStandard.backPress()) {            return;        }        super.onBackPressed();    }    @Override    protected void onPause() {        super.onPause();        JZVideoPlayerStandard.releaseAllVideos();    }

IjkVideoView播放器
一、加入依赖

implementation 'com.dou361.ijkplayer:jjdxm-ijkplayer:1.0.5'``**二、写入代码 有需求可以自行更改**```javascript View rootView = getLayoutInflater().from(this).inflate(R.layout.simple_player_view_player, null);        setContentView(rootView);         playerView = new PlayerView(this)                .setScaleType(PlayStateParams.fitparent)                .setPlaySource("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")                .setTitle("标题")                .startPlay();

更多相关文章

  1. 《Android第一行代码》first reading 十一
  2. 原YUV格式的解析 Android(安卓)NV21 视频采集
  3. android 调用系统 录像,录音等
  4. Android(安卓)播放视频的方法+播放测试地址 http
  5. Android(安卓)实时视频采集
  6. android VideoView播放工程raw下的视频+全屏问题
  7. Android获取视频音频的时长的方法
  8. 【Android】学习记录 -- 初识ffmpeg
  9. MediaRecorder视频的录制和播放

随机推荐

  1. Android PendingIntent和Intent
  2. android获取系统当前年月日时分秒的时间
  3. 修改android文件系统为可读可写
  4. Android中Data和String数据类型转换
  5. Android仿WIN8系统磁贴点击下沉倾斜效果
  6. Android NDK编译时出现的问题以及解决办
  7. Android下的SQLite数据库的相关操作及And
  8. Android Java方法链起来!链式调用方法、仿
  9. 第一章:初入Android大门(程序加载应用)
  10. Android SDK Manager设置代理服务器和端