美文网首页
录制小视频和语音的封装

录制小视频和语音的封装

作者: 程序员阿兵 | 来源:发表于2018-07-13 11:37 被阅读0次

MediaUtils

1: Android 的 MediaRecorder 相信用过的同学一定踩过很多坑
2: 之前写的代码很乱,现在重构了一下,可以直接放到自己的项目中用
3:本例子将 MediaRecorder 进行了重构,通过 MediaUtils 对外暴露几个必需的方法来实现录像和录音功能
4:录制视频界面参考新版微信小视频,还原了微信的动画效果
5:支持 Android 7.0
6:通过线程及 Exception 等手段避免了常见的 start failed , stop failed 等问题
7:重绘了录制视频和录音时的两个自定义view,可在原本基础上进行二次开发
8:提供了视频截图方法,支持双击放大,支持自动对焦
9:视频录制暂时使用 SurfaceView + Camera , 后续会升级为 TextureView + Camera2

效果图

638069-787db3e8ff6746a0 (1).gif 638069-4b9c1a6aead2891f.gif

核心类

MediaUtils

重构后对外暴露只有8行代码,可结合实际情况使用

// 初始化
      MediaUtils mediaUtils = new MediaUtils(this);
      mediaUtils.setRecorderType(MediaUtils.MEDIA_VIDEO);
      mediaUtils.setTargetDir(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES));
      mediaUtils.setTargetName(UUID.randomUUID() + ".mp4");
      mediaUtils.setSurfaceView(surfaceView);
      // 开始录制
      mediaUtils.record()
      // 结束录制 save or unSave
      mediaUtils.stopRecordUnSave();
      mediaUtils.stopRecordSave();

CameraHelper

在 Android 中录制视频时显示的 Size 和实际拍照的 Size 是由 Camera 所决定的,最好的方法是计算出可支持的 PreviewSize 和 VideoSize 计算出一个合适的size,同时根据自己视频的用途,选择合理的 Size

CameraHelper 参考自 GoogleCameraSample 帮助你计算出合适的 Size

CamcorderProfile

这是一个困扰我好久的地方,一直在想录制视频的时候,如何保存清晰度的情况下,还能控制文件的大小,终于找到了一种可行的办法

分辨率越大视频大小越大,比特率越大视频越清晰
清晰度由比特率决定,视频尺寸和像素量由分辨率决定
比特率越高越清晰(前提是分辨率保持不变),分辨率越大视频尺寸越大
CamcorderProfile 是 Android 提供的一个内置的视频参数配置类
videoFrameWidth 录制视频分辨率的宽
videoFrameHeight 录制视频分辨率的高
videoBitRate 这个就是比特率,决定了视频的清晰度
将分辨率和比特率结合自己的需求,进行有效的控制,可以的到自己想要的效果
本 demo 中,录制1080P的视频,大小在5M左右,还可以再小
最后 videoFrameRate 帧率,这个一般是摄像头会自动调节,所以设置了恒定的有的也不起作用

自定义View

仿造新版微信拍摄视频的界面,通过 Paint,RectF,Canvas 绘制,很简单直接看代码就好了
突然喜欢上了在 Android 画动效,开启 dribbble 抄动效模式

相关文章

  • 录制小视频和语音的封装

    MediaUtils 1: Android 的 MediaRecorder 相信用过的同学一定踩过很多坑2: 之前...

  • Android语音录制简单封装

    录音两个需要注意的地方,一是录音过短的时候会失败,所以要监听录音时间长短,小于一秒的时候就显示失败;二是录音的时候...

  • AVFoundation框架之录音(AVAudioRecorde

    录音属于AVFAudio里面的一个高级封装。在实际运用中,可以使用到语音录制,比如聊天等。这个对语音录制做一个简单...

  • Android语音录制和播放封装库(提供JS调用demo)

    实现功能: 语音录制、播放模块 支持基于Media和Audio的语音录制和播放 支持基于PCM的格式扩展操作 提供...

  • iOS 实现视频的录制,视频和音频的合成

    一、前沿 项目需要,实现录制无声小视频,在无声小视频的基础上,再录制声音。 二、总体步骤 录制无声小视频(有声无声...

  • 局域网内端到端的聊天项目(七)

    上一篇已实现单个及多个视频的发送 接下来实现 语音的录制/传输/播放功能 同样通过键盘工具条来触发 通过封装语音录...

  • 小视频录制和播放

    前段时间项目开发过程中遇到一个需求,想做一个类似微信那样的小视频,然后在录制视频的自定义图层上播放。于是就研究了 ...

  • 录制语音

    在前段时间我承担了晋中市家庭教育协会幸福读书会关于《13岁前妈妈一定要知道的心理学》的语音录制任务,看着表格...

  • 使用AVFoundation实现视频的录制(仿微信视频录制)

    前言:项目中有发送视频和图片的需求,产品想要微信小视频录制的功能,即单击拍照,长按录制小视频,参考很多大神的dem...

  • Android语音录制和播放

    介绍 由于最近项目需要,需要做语音录制和播放功能模块,所以做了一个轻量级的语音录制和播放库,方便调用这是一款参考环...

网友评论

      本文标题:录制小视频和语音的封装

      本文链接:https://www.haomeiwen.com/subject/kftjpftx.html