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

Layout文件内添加RelativeLayout

<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;
<activity
            android:name=".JiaoZiplayerActivity"
            android:configChanges="orientation|scree...
                                    在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,可以完美运行在 Java 环境。1.语法简洁、高级2.空指针安全3.完全兼容Java:可Kotlin 和 Java 两种语言混合开发4.函数式编程:扩展函数、支持Lambda表达式5.类型推断:无需指明类型6.强大的协程:处理线程问题7.委托。
    MediaMetadataRetriever mmr = new MediaMetadataRetriever();
    mmr.setDataSource(mp4Path);
    //获取第一帧图像的bitmap对象 单位是微秒
    Bitmap bitmap=mmr.getFrameAtTime(30 * 1000 * 1000);
                                    使用android原生控件VideoView播放本地或者网络视频, 实现如下: 
XML文件中:        <VideoView
            android:id="@+id/videoView"
            android:layout_width="match_parent"
            android:layout_height="match_paren
                                    1 @JvmOverloads
@JvmOverloads注解在Kotlin中的作用就是:暴露多个重载方法;
class CustomVideoView @JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = null
) : FrameLayout(context, attrs) {
    init {
        println("自定义View")
在自定义View时,如果在Java中
                                    在许多应用中,都加入了播放视频,有的在登录页,有的在启动页,今天就试试在启动页播放本地视频。
1,重写VideoView 
    由于 视频的尺寸问题导致VideoView 播放视频的时候不能全屏,这时候需要重写VideoView的onMeasure()的方法,代码如下:
  public class FullScreenVideoView extends VideoView {
                                    VideoView是安卓系统自带的播放器,VideoView extends SurfaceView,是一个不错的播放器,但是在用VideoView播放网络视频的时候会出现黑屏一会,黑屏的时间长短取决于网络和视频资源,这种体验不是太好,出于这个原因就想优化这个流程。
解决思路:1.首先获取视频的第一帧作为VideoView的背景 2.当视频资源准备好,开始播放的时候,把VideoView的背景设置成透明的
具体流程:1.首先获取通过MediaMetadataRetriever获取视频第一帧图片设置Vid
                                    “抖音”都玩过吧,是不是很好玩,我反正是天天刷,作为一个非著名的Android低级攻城狮,虽然技术菜的一匹,但是也经常刷着刷着会思考:咦?这玩意是用哪个控件做的?这个效果是咋实现的啊?由于本人技术水平有限,所以今天咱就先挑个比较简单的来看看是如何实现的,思考再三,我们就拿抖音首页的这个效果来练练手吧,话不多说,开搞!
第一种方式是使用MediaPlayer 结合SurfaceView
 来播放,通过MediaPlayer来控制视频的播放、暂停、进度等;
通过SurfaceView 来显示视频内容;
优点:灵活性高,可以进行自定义;
缺点:难度比较大;
第二种方式是使用VideoView播放,这个类其实也是继承了SurfaceView 类,并
                                    在短视频App开发中,编辑短视频有很多重点功能,如视频滤镜、音乐混音、静态贴纸、加水印等,今天讲一讲如何使用腾讯短视频sdk获取视频封面或略缩图。
首先,初始化控件,设置必要配置:
mTXVideoEditer = editer;
mTXVideoEditer.setTXVideoPreviewListener(mPreviewListener);
mTXVideoEditer.setVideoG...