nativescript-videorecorder-x
NativeScript 视频录制插件
npm i --save nativescript-videorecorder-x

npm npm

NativeScript VideoRecorder

此插件源自 nativescript-videorecorder,仅对 AndroidX 进行了修改。一旦 nativescript-videorecorder 插件更新,此插件将被弃用。

安装

tns plugin add nativescript-videorecorder-x

快速入门

JavaScript

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

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-x';

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 定制。

<Page xmlns="http://schemas.nativescript.org/tns.xsd" xmlns:recorder="nativescript-videorecorder-x/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 获取或设置摄像头位置
outputOrientation PORTRAIT void 获取或设置输出视频方向
isTorchAvailable 布尔型 只读:此摄像头是否支持火炬
火炬 false 布尔型 启用/禁用火炬(目前仅限iOS)
质量 MAX_480P void 获取或设置视频质量

outputOrientation

请注意,录制时不要更改方向,这不受支持。

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

此属性允许您正确管理输出文件的方向,这意味着您可以信任您的重力传感器检测方向并在相机上设置它。有了这个,您可以在设备方向锁定时正确更改方向。