赞
踩
目录
- <VideoView
- android:id="@+id/video"
- android:layout_width="match_parent"
- android:layout_height="410dp" />
kotlin中可以直接使用VideoView的id(这里是video)来进行操作
java中需要findViewById来获取控件
view=findViewById(R.id.video);
通过VideoView类对象的setVideoPath来设置视频路径
这里的视频路径可以是Android本地的视频也可以是视频的网页url链接
当要播放Android本地视频时,需要添加访问存储的权限(Andoridmanifest.xml文件内添加,代码动态申请)
//网页视频Url链接 //String Path="https://mos-vod-drcn.dbankcdn.cn/P_VT/video_injection/711346606/v3/52B0F7951327599661900370304/MP4Mix_H.264_1920x1080_6000_HEAAC1_PVC_NoCut.mp4?accountinfo=0N4yN1mj5VdH9HFql04pfwgjH5f9%2Fd0uVg9g40mn3NWLOJOG7eYt8reLME3%2FDKUKDvOYMWk86UCXjG3tLFa4wg%3D%3D%3A20211206095003%3AUTC%2C%2C%2C20211206095003%2C%2C%2C-1%2C1%2C0%2C%2C%2C1%2C%2C%2C%2C1%2C%2C0%2C%2C%2C%2C%2C1%2CEND&GuardEncType=2&contentCode=M202112061761327599233494155265&spVolumeId=MP202112061761327599230507810816&server=mosplay-drcn.himovie.hicloud.com&protocolType=1&formatPriority=504*%2C204*%2C2" //view.setVideoPath(Path) // Android本地视频 String path = Environment.getExternalStorageDirectory().getPath()+"/test.mp4"; view.setVideoPath(path);
- MediaController mediaController = new MediaController(MainActivity.this);
-
- //VideoView与MediaController建立关联
- view.setMediaController(mediaController);
view.requestFocus(); view.start();
设置视频封面的解决方法是采用RelativeLayout的布局方式,在Layout布局内添加ImageView覆盖掉VideoView,当视频播放时ImageView的可见性为Gone,视频播放完成时ImageView的可见性为Visible
<RelativeLayout android:layout_width="match_parent" android:layout_height="410dp"> <VideoView android:id="@+id/video" android:layout_width="match_parent" android:layout_height="410dp"/> <ImageView android:id="@+id/video_holder" android:layout_width="match_parent" android:layout_height="410dp" android:background="@drawable/image"/> </RelativeLayout>要确保ImageView的尺寸大于等于VideoView的尺寸
仍与VideoView控件的获取方式类似,Kotlin可以直接使用id而Java需要findViewById
监听视频播放完成的监听器方法是:setOnCompletionListener
具体代码如下:
view.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { view.pause(); //视频暂停 imageView.setVisibility(View.VISIBLE); //遮挡图片设置可见 } });
视频播放时设置ImageView不可见的具体操作在解决播放第一帧短暂黑屏中解决
视频播放第一帧时的短暂黑屏可以监听视频播放的第一帧开始时再设置ImageView不可见
具体的监听方法是:setOnPreparedListener和其内嵌套的setOnInfoListener
代码如下:
view.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING); mp.setOnInfoListener(new MediaPlayer.OnInfoListener() { @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { //播放第一帧时设置图片消失 if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) imageView.setVisibility(View.GONE); return true; } }); } });
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。