Android视频的操作

本文详细介绍了Android视频的播放与采集。在播放方面,讲解了MediaController + VideoView、MediaPlayer + SurfaceView + 自定义控制器以及Mediaplayer + SurfaceView + MediaController的使用。在视频采集部分,讨论了相机的使用和开发流程,包括Camera和Camera2的区别,以及如何通过Intent和MediaRecorder实现视频采集。
摘要由CSDN通过智能技术生成

上节课我们着重介绍了Android中的音频的处理,通过学习,我们已经熟悉并掌握了多媒体开发的几个操作,大致可以分为:a

  • 播放和采集
  • 编解码处理
  • 算法处理,实现特殊功能
  • 标准协议以及播放器工具类的开发

本节课我们来看一下Android的视频的相关操作。Android提供了常见的视频的编码、解码机制。使用Android自带的MediaPlayer、MediaController等类可以很方便的实现视频播放的功能。支持的视频格式有MP4和3GP等。这些多媒体数据可以来自于Android应用的资源文件,也可以来自于外部存储器上的文件,甚至可以是来自于网络上的文件流。

一、视频的播放

1.1 MediaController + VideoView

这种方式是最简单的实现方式。其中两个核心的API是:

  • VideoView:继承了SurfaceView同时实现了MediaPlayerControl接口。
  • MediaController:Android封装的辅助控制器,带有暂停,播放,停止,进度条等控件。

通过VideoView+MediaController可以很轻松的实现视频播放、停止、快进、快退等功能。

a、什么是SurfaceView

在之前的课程中,我们接触到的所有的UI控件或者布局都是View的子类,常用的View有布局组件 ConstraintLayout、RelativeLayout 与基本的显示组件ImageView、TextView 等。我们再来回顾下Android的视图渲染机制:View是通过刷新来重绘视图,系统通过发信号来进行屏幕的重绘,刷新的时间间隔是16ms,如果我们可以在16ms以内将绘制工作完成,则没有任何问题,如果我们绘制过程逻辑很复杂,并且我们的界面更新还非常频繁,这时候就会造成界面的卡顿。

在一些要求高效率的视图更新和绘制的场景中,该如何保证视图的流畅效果呢?Android为开发者提供了SurfaceView。我们可以对SurafceView和View做一个简单的对比说明:

  • 1、View适用于主动更新的情况,而SurfaceView则适用于被动更新的情况,比如频繁刷新界面。
  • 2、 View在主线程中对页面进行刷新,而SurfaceView则开启一个子线程来对页面进行刷新。
  • 3、View在绘图时没有实现双缓冲机制,SurfaceView在底层机制中就实现了双缓冲机制。

要想使用SurfaceView需要经过创建、初始化、使用三个步骤。

Surface用来处理由屏幕合成器管理的原始缓冲区。Surface通常由图像缓冲区的使用者(例如SurfaceTexture、MediaRecorder 或 Allocation)创建或由其创建,并交给某种类型的生产者(例如OpenGL、MediaPlayer 或 CameraDevice)进行绘制。

结论:Android 平台上,无论开发者使用什么渲染 API,一切内容都会渲染到 Surface。Surface 表示缓冲队列中的生产方,在 Android 平台上创建的每个窗口都由 Surface 提供支持。SurfaceView 是对 Surface 的包装,用来向

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值