nativevideo-recorder
由triniwiz创建 | v3.0.0-beta.6
NativeScript 视频录制插件
npm i --save nativevideo-recorder

npm npm

NativeScript VideoRecorder

安装

tns plugin add nativevideo-recorder

快速开始

JavaScript

var vr = require('nativescript-videorecorder');

var options = {
saveToGallery: true,
duration: 30,
format: 'mp4',
size: 10,
hd: true,
explanation: 'Why do i need this permission'
}

var videorecorder = new vr.VideoRecorder(options);

videorecorder.record().then((data)=>{
console.log(data.file)
}).catch((err)=>{
console.log(err)
})

TypeScript

import { VideoRecorder, Options as VideoRecorderOptions } from 'nativescript-videorecorder';

const options: VideoRecorderOptions = {
hd: true
saveToGallery: true
}
const videorecorder = new VideoRecorder(options)

videorecorder.record().then((data) => {
console.log(data.file)
}).catch((err) => {
console.log(err)
})

VideoRecorder

选项

可以将选项对象传递给VideoRecorder的构造函数或作为VideoRecorder::record参数(作为覆盖)。

  • hd?: boolean - 如果为true,使用设备最高质量,如果为false,则使用MMS质量(默认:false
  • saveToGallery?: boolean - 允许将视频保存到设备图库,否则将存储在应用沙盒中(默认:false
  • duration?: number - 限制视频的时长,0表示无限(默认:0
  • position?: 'front' | 'back' | 'none' - 强制使用哪个设备摄像头,'none'表示无偏好(默认:none

Android的附加参数

  • size?: number - 限制视频的大小,0表示无限(默认:0
  • explanation?: string - 为什么应该接受权限,api > 23时可选

iOS的附加参数

  • format?: 'default' | 'mp4' - 允许在Android设备上播放视频(默认:'default'),建议用于跨平台应用

VideoRecorder 属性

  • options: Options 选项对象(见上方部分),可以从构造函数设置

VideoRecorder 方法

  • record(options?: Options): Promise<{ file?: string } > 返回一个包含文件路径作为file键的对象的Promise。如果视频已保存到图库,则可能不存在。可以提供一个可选的options参数来覆盖实例options,这是已弃用的。
  • requestPermissions(): Promise 返回一个Promise,如果权限正常则解析,如果用户未接受权限则拒绝。此方法在调用record()时隐式调用
  • isAvailable(): boolean 检查设备是否有摄像头且与选项中设置兼容

上述Promise可以拒绝为

  • { event: 'denied'} - 权限未被接受
  • { event: 'cancelled'} - 视频捕获已取消
  • { event: 'failed'} - 通用错误

AdvancedVideoView

AdvancedVideoView不会打开设备相机应用,而是允许您将相机视图嵌入到您的应用中。然后,您可以在其上添加按钮以开始/停止录制。它允许更深入地定制UI。

Android需要API 21+

<Page xmlns="http://schemas.nativescript.org/tns.xsd" xmlns:recorder="nativescript-videorecorder/advanced">
<recorder:AdvancedVideoView quality="highest" cameraPosition="front" id="camera"/>
const advancedView = page.getViewById("camera");
advancedView.startRecording();

Api

方法 默认 类型 描述
start() void 开始相机预览
stop() void 停止相机预览
startRecording() void 开始录制相机预览
stopRecording() void 停止录制相机预览
toggleCamera() void 在前后摄像头之间切换
toggleTorch() void 切换手电筒(目前仅限iOS)
duration int 获取当前录制视频的时长
cameraPosition BACK void 获取或设置相机位置
输出方向 肖像模式 void 获取或设置输出视频方向
torchAvailable 布尔型 只读:此相机是否支持torch
torch false 布尔型 启用/禁用torch(目前仅限iOS使用)
quality MAX_480P void 获取或设置视频质量

输出方向

注意在录制时不要改变方向,不支持此操作。

可能值: portraitportraitUpsideDownlandscapeLeftlandscapeRight,您也可以使用Orientation枚举。

此属性让您正确管理输出文件的旋转,这意味着您可以根据重力传感器检测到的方向并设置在相机上。有了这个,即使设备方向锁定,您也可以正确地更改方向。