VideoRecorder 拓展:前台预览录制 + 后台无预览录制,支持分辨率、码率设置

« 返回首页

logo VideoRecorder视频录制拓展

拓展开发起由:有用户询问 千问Max版 说我们有视频录制拓展,经过沟通当时我们的确没做这款拓展,确认是 AI 的幻觉。后面又有另一个用户问到视频录制拓展,想做会议录制App,要可以调整码率实现视频体积压缩的功能。

经过调研,目前国外有一款视频录制拓展,不支持码率设置,一款后台视频录制拓展,支持码率设置,2款拓展均为收费拓展,国内很难购买,而且看起来不是很成熟,需要研究且质量无法保证。

然后我们决定自研一款视频录制拓展,包括但不限于以上功能。经过了一周的开发测试,我们这款拓展就诞生并上线了。期间用户也积极协助我们进行拓展的测试,经过了很多轮的测试打磨,终于质量趋于稳定,好用!!

导入拓展后:

组件对比

  VideoRecorder BackgroundVideoRecorder
预览画面 有(需绑定布局组件)
应用最小化 录制中断 录制继续
典型场景 用户主动录制、扫码录像 后台监控、静默录制
独有功能 摄像头切换、闪光灯、静音 取消录制、录制中截图

两者共享同一组编码属性(Quality、BitRate、FrameRate 等),录音权限逻辑相同。

注意:视频录制访问摄像头需要请求权限:

如果需要同时录制声音,也要请求声音权限。可以通过属性去掉录制声音的勾选,则为静音录制,此时无需申请声音权限:


VideoRecorder — 前台模式(带预览)

在布局中显示摄像头实时画面,录制视频。

参考代码块:

BackgroundVideoRecorder — 后台模式(无预览)

无预览画面,应用最小化后录制继续。适合后台监控、静默录制等场景。

参考代码块:

属性

通用属性(两个组件共享)

UseFrontCamera
是否使用前置摄像头,默认 false
FlashOn
是否启用闪光灯,默认 false
CameraOrientation
摄像头方向(0/90/180/270),默认自动检测
Quality
视频画质预设,默认 HIGHEST。支持 HIGHESTLOWEST720P1080P480P1920x1080
BitRate
视频编码码率(bps),默认 0 自动根据分辨率计算。建议 2000000~12000000
FrameRate
视频帧率,默认 30。支持 30/60
AudioBitRate
音频编码码率(bps),默认 128000。建议 64000~320000
RecordAudio
是否录制音频,默认 true
RecordingDuration
当前录制时长(毫秒),只读。未录制时返回 0,录制中返回已录制的毫秒数

VideoRecorder 专用属性

ScaleType
预览缩放类型,0=FillCenter,1=FitCenter(默认)
AspectRatio
宽高比,0=4:3,1=16:9,-1=默认(默认)

只读常量

FeatureBackCamera
后置摄像头特性标识,值为 "back_camera"
FeatureFrontCamera
前置摄像头特性标识,值为 "front_camera"
FeatureAutofocusCamera
自动对焦特性标识,值为 "autofocus"
FeatureCameraFlash
闪光灯特性标识,值为 "flash"
ScaleTypeFillCenter
填充居中缩放类型,值为 0
ScaleTypeFitCenter
适应居中缩放类型,值为 1
AspectRatio4n3
4:3 宽高比,值为 0
AspectRatio16n9
16:9 宽高比,值为 1
AspectRatioDefault
默认宽高比,值为 -1

事件

通用事件

RecordingStarted()
录制开始时触发
VideoRecorded(videoPath)
录制完成并保存时触发,参数为视频文件路径。默认路径为App的私有目录,无需额外权限申请:

如需将文件发送到其他位置,可以使用 文件管理器 组件拷贝文件,或使用 信息分享器 组件分享文件到其他App。

RecordingPaused()
录制暂停时触发
RecordingResumed()
录制恢复时触发
ErrorOccurred(errorMsg)
发生错误时触发

VideoRecorder 事件

CameraPreviewStarted()
预览启动时触发
CameraPreviewStopped()
预览停止时触发
CameraSwitched(isFrontCamera)
摄像头切换时触发
RecordingMuted()
静音录制时触发
RecordingUnmuted()
取消静音时触发

BackgroundVideoRecorder 事件

PhotoCaptured(filePath)
录制中截图成功时触发
PhotoCaptureError(message)
截图失败时触发

方法

通用方法

StartRecording()
开始录制。根据 RecordAudio 属性决定是否录制音频,录制音频时需要录音权限
StopRecording()
停止录制并保存视频,触发 VideoRecorded 事件
PauseRecording()
暂停录制(需要 Android 7.0+)
ResumeRecording()
恢复录制
IsFeatureAvailable(feature)
检查设备是否支持指定特性。可选值:back_camerafront_cameraflashautofocus
GetSupportedVideoQualities()
获取当前摄像头支持的画质列表
HasRecordAudioPermission()
检查是否有录音权限
RequestRecordAudioPermission()
打开系统应用权限设置页面,引导用户开启录音权限

VideoRecorder 方法

InitializeCamera(container)
在指定布局中初始化摄像头预览。container 为布局组件(如 VerticalArrangement)
StopCamera()
关闭摄像头并移除预览画面
SwitchCamera()
切换前后摄像头(录制中不可切换)
EnableFlash(enable)
设置闪光灯状态,预览启动后使用
IsFlashOn()
查询闪光灯是否开启
MuteRecording()
静音录制(停止音频采集,视频继续录制)
UnMuteRecording()
取消静音(恢复音频录制)

BackgroundVideoRecorder 方法

CancelRecording()
取消录制并删除临时文件
CapturePhoto()
录制中截图,自动保存到应用私有目录

编码参数参考

码率对照表(BitRate)

分辨率 建议码率 自动计算值
1080P (1920x1080) 6~10 Mbps 8 Mbps
720P (1280x720) 3~6 Mbps 4 Mbps
480P (720x480) 1.5~3 Mbps 2 Mbps
更低 1~2 Mbps 1.5 Mbps

Quality 预设值

  • HIGHEST - 设备支持的最高分辨率
  • LOWEST - 设备支持的最低分辨率
  • 1080P / 720P / 480P - 按高度匹配
  • 1920x1080 / 1280x720 - 指定具体分辨率

注意事项

  • 录制参数(码率/帧率/分辨率)在录制前设置,录制过程中不可修改
  • 暂停/恢复需要 Android 7.0+
  • VideoRecorder 录制中不可切换摄像头
  • BackgroundVideoRecorder 录制中可截图(CapturePhoto)
  • 需要摄像头和录音权限

问题解决历程

  • 比较棘手的问题是竖屏和横屏切换,视频预览画面的自动调整问题,经过了多版本的调整,已经搞定。

  • 手机预览画面充满布局,已经搞定。

  • 屏幕初始化时使用前置摄像头:属性在录制前设定,经过测试 ok 的。

  • 视频默认放 app 的私有目录无需请求额外文件访问权限,使用文件浏览器可以查看录制的.mp4 文件,暂时可以使用信息分享器组件把文件另存到相册或分享给其他 app。 后续考虑研究请求权限放相册中。

  • 增加一个属性返回当前已录制了多长时间,已加上。

  • 视频质量(quality)属性改为了下拉框,也可设置指定的文本:
    • 设计器里是下拉框,可选:HIGHEST、LOWEST、1080P、720P、480P.
    • 代码块里可以直接输入文本值,支持:预设:HIGHEST、LOWEST、1080P、720P、480P,自定义分辦率:1920×1080、1280x720 等。
  • 用户提出录制时需要保持屏幕常亮,已搞定!

用户写了长长的感谢信:

标题: BackgroundVideoRecorder/VideoRecorder 视频录制扩展打磨:反复优化质量控制功能,必须狠狠表扬清泛!

正文内容: 在这里特意开帖,真诚、认真地表扬一位超靠谱、超有耐心的伙伴 ——清泛! 最初对接BackgroundVideoRecorder/VideoRecorder 视频录制扩展控件时,清泛就展现出了极强的专业能力,高效实现了基础录制功能,能稳定支持视频录制并调整质量参数,整体效果十分出彩。但后续我在查看成果后,针对录制逻辑、视频质量控制等细节提出了自己的疑问、个人想法以及多处优化诉求,原本只是抱着试试看的心态沟通,没想到得到了全程极致的耐心对接。 面对我的多次疑问和反复修改需求,清泛全程没有一丝敷衍、没有半点不耐烦。每一次的问题、每一处调整建议,都被认真倾听、逐一接纳。不管是视频分辨率、码率等质量参数的打磨、录制稳定性的优化,还是贴合我实际使用场景的功能微调改动,都不厌其烦地反复修改、多次精进,一次次迭代优化成品,尽全力贴合我的预期。 整个沟通过程中,清泛态度温和、响应及时,始终积极配合调整,极致严谨、精益求精的做事态度让人特别感动。不同于草草收尾的敷衍对接,真正做到了有问必答、有改必优,用心对待每一处细节、每一次诉求。 专业能力过硬,服务态度绝佳,包容耐心拉满,对待开发工作认真负责、极致用心。这样靠谱、有温度、肯深耕细节的伙伴,真的值得被大力看见、全力表扬! 再次感谢清泛的反复打磨与耐心付出!期待后续继续携手,带来更多优质、完美的成果!

拓展下载

收费拓展,请联系客服购买,会员享受五折优惠~

文档反馈