NativeScript-Danem-VideoRecord
一个 NativeScript 视频录制工具。
npm i --save nativescript-danem-videorecord

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 } > 返回一个 Promise,其中包含作为 file 键的文件路径对象。如果视频已保存到相册,则可能不存在。可以提供一个可选的 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)
录制时长 整型 获取当前录制视频的时长。
相机位置 后置 void 获取或设置相机位置
输出方向 纵向 void 获取或设置输出视频方向
torch可用性 布尔型 只读:此相机是否支持torch
torch 布尔型 启用/禁用torch(目前仅限iOS)
质量 MAX_480P void 获取或设置视频质量

输出方向

请注意,在录制过程中不要改变方向,这是不支持的。

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

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