VideoView播放视频初体验

Android多媒体功能开发(8)——使用VideoView控件播放视频 用VideoView播放视频的基本步骤是:创建或获取VideoView控件、设置视频数据源、开始播放、停止播放、释放资源。播放过程中可以暂停和继续。停止播放后可以恢复,此时会再从头播放。也可以重新设置视频数据源,播放另一个视频。 阅读详情

转载请标明出处:http://blog.youkuaiyun.com/EdisonChang/article/details/52087248

这几个月一直在忙项目上的事情,所以已经有一段时间不写博客,抽时间整理下最近的收藏夹,感觉还是有一些新的知识点可以分享的。

先从最近的说起,近期项目上需要支持视频播放功能,虽然第三方的播放器在播放体验上会比原生的好太多,而且基本上也不需要额外的处理。刚开始也考虑过要接入公司的播放器sdk,当然github上也有很多开源库都是不错的,但是唯一的弊病就是sdk太大了,所以就没有考虑这一些第三方库,而直接用了系统的videoView 原生视频播放组件,过程中遇到的一些问题在这里做一下简单的记录。

博主在这个过程中也参照了很多资料,有些文章知识点总结的还是比较到位的,先推荐几篇相关的文章,

1、[Android基础] VideoView
2、Android三种播放视频的方式
3、Android播放器框架分析之AwesomePlayer

(1)android支持的视频编码格式
这里写图片描述

(2)如何使用VideoView

        videoView = (VideoView) root.findViewById(R.id.videoView);
        //设置播放完成以后监听
        videoView.setOnCompletionListener(mOnCompletionListener);
        //设置发生错误监听,如果不设置videoview会向用户提示发生错误
        videoView.setOnErrorListener(mOnErrorListener);
        //设置在视频文件在加载完毕以后的回调函数
        videoView.setOnPreparedListener(mOnPreparedListener);
        Uri uri = Uri.parse(mUrl);
        videoView.setVideoURI(uri);

一般情况下我们需要自己能够自定义视频控制器,

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
>
    <VideoView
            android:id="@+id/videoView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    <ProgressBar
            android:id="@+id/progressBar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"/>
    <xxx.xxx.MediaController
            android:id="@+id/media_controller"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

    </xxx.xxx.MediaController>
</RelativeLayout>

MediaController 就是一个简单的

Android 使用VideoView播放本地视频详解 前言:由于视频源的尺寸导致播放的时候不能全屏,需要重写VideoView的onMeasure方法,所以我们创建ConditionVideoView继承于VideoView。 ConditionVideoView类代码如下: public class ConditionVideoView extends VideoView { public ConditionVideoView(Context context) { super(context); } publi 阅读详情

相关推荐

Android中VideoView的视频播放功能实战

VideoView是Android开发中的一个用于显示视频的视图组件。通过它,开发者可以在应用中嵌入一个视频播放器,可以播放视频文件或者网络视频流。它提供了一套丰富的API,使得视频播放功能的实现变得简单快捷。

weixin_35749796的博客 1612

Android videoview抢占焦点的处理方法

主要为大家详细介绍了Android videoview抢占焦点的处理方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

注意力机制详解

注意力机制详解Attention机制由来Attention定义Encoder-Decoder框架存在问题:Attenion机制的引入Attention机制的类别Hard AttentionSoft AttentionGlobal AttentionLocal AttentionSelf AttentionMulti-head Attention附录—Transformer全局视角Tensor视角Encoder部分Self-AttentionSelf-Attention向量计算Self-Attention的矩

weixin_43236310的博客 1万+

【低轨】Starlink星链-Ku波段下行信号信号结构解析

Starlink播发位于10.7~12.7GHz之间的下行信号,该信号的设计意图是用于宽带网络通信,但是,文章通过对该信号信号体制的详细分析,以及解调出所调制的完整码序列,为利用Starlink信号进行定位解算提供了必要条件。(注,码序列对应的是卫星版本0.9,1.0和1.5)

iseeinvisible的博客 6301

Matlab/simulink频率响应分析方法

Matlab/Simulink仿真系列问题一.电气模块与信号模块 一.电气模块与信号模块

virtuoso~晓晓 3万+

万物皆可GAN ---普通GAN, pix2pix, CycleGAN和pix2pixHD的比较以及演变过程

普通GAN, pix2pix, CycleGAN和pix2pixHD的原理、比较以及演变过程

m0_61985580的博客 3724

MIPI CSI-2数据加扰技术解析:LFSR实现与多通道同步策略

本文深入解析了MIPI CSI-2协议中的数据加扰技术,该技术通过线性反馈移位寄存器(LFSR)对图像数据进行随机化处理,旨在有效降低高速传输中的电磁干扰。文章详细阐述了LFSR的工作原理、D-PHY与C-PHY物理层不同的初始化与同步策略,并探讨了多通道同步的实现方法,为高速接口的EMC设计与调试提供了实践指导。

weixin_29207149的博客 384

生成对抗网络(GAN)在数据增强中的应用【附核心实战代码】

生成对抗网络(GAN)由Ian Goodfellow等人在2014年提出。它包含两个主要的部分:生成器(Generator)和判别器(Discriminator)。生成器负责生成假数据,而判别器则用于区分输入的数据是真实的还是由生成器生成的。通过这种对抗过程,生成器不断优化自己,生成越来越真实的样本。最终,生成器生成的样本几乎无法被判别器区分与真实数据。

一键难忘的博客 3120

vue2 - elementUI表格table树形结构复选框勾选父子联动示例,el-table树状表格tree复选框checkbox多选框全选/反选取消children(当子级全选中,父级自动勾选)

vue2,elementui,el-table树状表格多选,树形结构结合多选框使用,实现单选父子联动全选反选,勾选联动父级勾选,表格多选check父子联动,table表格children如何嵌入复选框,el-table使用多选框与树形数据写一个有半选全选功能的表格,el-table树形表格实现复选框多选效果,表格树状结构多选,每一个row都可以选中并且联动全选按钮,table选父带子选子带父,树形数据与懒加载,Table表格树形结构多选框选中父级时会选中子级,elementUI表格里树形结构嵌套复选框全选全

✅ 精选推荐文章 1万+

103.在 Vue 3 中使用 OpenLayers 控制图层来显示/隐藏地图

是一个强大的开源库,可以用于构建各种地理信息系统应用。在 Vue 3 中,我们可以结合。方法,可以直接控制某个图层是否可见,而不需要删除或重新创建图层。在开始之前,确保你已经搭建了 Vue 3 项目,并安装了。本文将详细介绍如何在 Vue 3 组合式 API (,并实现按钮控制地图的显示/隐藏功能。会导致 OSM 瓦片地图无法加载。方法控制地图图层的显示与隐藏。安装完成后,即可开始编写代码。在本教程中,我们介绍了如何在。来实现地图的显示/隐藏功能。来实现交互式地图,并通过。在 WebGIS 开发中,

小彭的博客 1560

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: 手把手教你将odex转dex
下一篇: IOC和AOP
EdisonChang
博客等级 码龄11年 10粉丝 20原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值