Android之播放本地视频和Url视频方法

一、播放本地视频文件

根据文件路径在浏览器中播放,可用于视频预览等场景

效果:

用浏览器播放本地视频

文件路径例子:

/storage/emulated/0/Android/data/com.custom.jfrb/files/Movies/1697687179497.mp4

复制代码
File file = new File("文件路径");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra("oneshot", 0);
intent.putExtra("configchange", 0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        Uri contentUri = FileProvider.getUriForFile(UploadVideoActivity.this, getContext().getPackageName() + ".provider", file);
        intent.setDataAndType(contentUri, "video/*");
} else {
        intent.setDataAndType(Uri.fromFile(file), "video/*");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
startActivity(intent);

二、播放Url视频(GSYVideoPlayer类的使用)

效果:

播放Url视频

1、导入依赖

复制代码
implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer:v8.1.7-release-jitpack'

2、xml文件

复制代码
<com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
            android:id="@+id/video_player"
            android:layout_width="match_parent"
            android:layout_height="220dp" />

3、Activity中调用

(1) 绑定控件

复制代码
@InjectView(id = R.id.video_player)
StandardGSYVideoPlayer mVideoPlayer;

(2)播放视频

视频Url例子:https://recordcdn-qk.jfdaily.com/upload/vod/user1694515885005019/1697678251135382/preview/video.mp4

复制代码
//播放横屏视频
 boolean setUp = mVideoPlayer.setUp("视频Url", true, "名字");
//设置封面
//        if (setUp) {
//            Glide.with(this).load(productItem.getCapture()).into((ImageView) mVideoPlayer.getThumbImageView());
//        }
//隐藏自带的标题和返回键
mVideoPlayer.getTitleTextView().setVisibility(View.GONE);
 mVideoPlayer.getBackButton().setVisibility(View.GONE);
 
//全屏按键
mVideoPlayer.getFullscreenButton().setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
             mVideoPlayer.startWindowFullscreen(ProductDetailActivity.this,false,true);
       }
});
GSYVideoType.setShowType(GSYVideoType.SCREEN_TYPE_DEFAULT);
//根据视频尺寸,自动选择竖屏全屏或者横屏全屏
mVideoPlayer.setAutoFullWithSize(true);
//全屏动画
mVideoPlayer.setShowFullAnimation(true);
//开始播放
mVideoPlayer.startPlayLogic();

(3)相关生命周期中添加操作

复制代码
@Override
    public void onBackPressed() {
        if (GSYVideoManager.backFromWindowFull(this)){
            return;
        }
        super.onBackPressed();
    }

    @Override
    protected void onResume() {
        super.onResume();
        mVideoPlayer.onVideoResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mVideoPlayer.onVideoPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        GSYVideoADManager.releaseAllVideos();
    }

三、持续更新中...

相关推荐
晚风叙码1 小时前
MySQL 数据类型详解:从数值到字符串,一篇讲透
android·mysql·adb
传奇开心果编程1 小时前
【Compose Multiplatform 跨端开发学与练】第3课 布局与组件
android·windows·学习·ui·ios·kotlin·composer
小猴子爱上树2 小时前
跨马翻译:批量图片翻译+视频字幕+智能抠图,跨境电商在线图片翻译工具
大数据·人工智能·python·音视频
传奇开心果编程4 小时前
【Compose Multiplatform 跨端开发学与练】第8课 资源管理与主题
android·windows·学习·ios·kotlin·web·composer
阿明副业观察5 小时前
AI视频创作流程怎么做?完整指南与工具推荐
大数据·人工智能·aigc·音视频·ai写作
aichitang20245 小时前
应用数学与音频信号处理
音视频·信号处理
传奇开心果编程5 小时前
【Compose Multiplatform 跨端开发学与练】第9课 测试与调试
android·学习·macos·ios·kotlin·web·composer
传奇开心果编程6 小时前
【Compose Multiplatform 跨端开发学与练】第4课 导航与路由
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程6 小时前
【Compose Multiplatform 跨端开发学与练】第6课 状态管理与架构
android·学习·ui·ios·架构·kotlin·composer
事圆则缓6 小时前
Android AOSP 定制常见概念:源码目录、系统镜像与刷机流程
android