Cordova 媒体捕获插件

2025年03月17日 | 阅读 9 分钟

为了增强 Cordova 插件的功能,一个新的 媒体捕获 插件被用于提供对设备多种功能的访问,例如 音频、图像和视频数据。如果谈到插件的兼容性,它支持 Windows、Android、iOS、浏览器 平台。此插件定义了一个全局 navigator.device.capture 对象。如果它在全局作用域内,尽管如此,此插件在 deviceready 事件之后才可用。

安装

要安装媒体捕获插件,请在命令行中输入以下命令。

性质

supportedAudioModes: 它主要指设备支持的 音频录制 格式。

supportedImageModes: 此属性指设备支持的图像录制格式和大小。

supportedVideoModes: 此属性指设备支持的视频录制格式和分辨率。

对象

媒体捕获插件中使用了几个对象,它们列举如下:

  • Capture
  • CaptureAudioOptions
  • CaptureImageOptions
  • CaptureVideoOptions
  • CaptureCallback
  • CaptureErrorCB
  • ConfigurationData
  • MediaFile
  • MediaFileData

方法

现在,是时候讨论 媒体 插件中用到的一些方法了

  • capture.captureAudio
  • capture.captureImage
  • capture.captureVideo

MediaFile.getFormatData

capture.captureAudio

此方法的主要任务是启动音频录制应用程序并返回捕获的音频剪辑文件信息。

通过使用此方法启动异步操作,以使用设备的默认音频录制应用程序捕获音频录音。如果谈到异步操作,用户可以在单个会话中捕获多个音频录音。

捕获操作可在以下情况下结束

情况1:如果用户退出音频录制应用程序。

情况2:如果达到 CaptureAudioOptions.limit 指定的最大录音数量。

CaptureAudioOptions.limit 的默认值为1。因此,录制单个音频剪辑后,捕获操作将终止。

当捕获操作完成时,Capturecallback 方法将执行一个 MediaFile 对象数组。如果用户在捕获音频剪辑之前终止操作,则会遇到 CaptureError.CAPTURE_NO_MEDIA_FILES

此方法支持多种平台,例如 WindowsiOS、浏览器。

示例

capture.captureImage

capture.captureImage 方法负责启动设备的相机应用程序。它返回捕获的图像文件信息。

通过使用此方法启动异步操作,以使用设备的相机应用程序捕获图像。通过此操作,用户可以在单个会话中捕获多个图像。

捕获操作可在以下情况下结束

情况1:如果用户关闭相机应用程序。

情况2:如果达到 CaptureImageOptions.limit 指定的最大录音数量。

CaptureImageOptions.limit 的默认值为1。因此,捕获单个图像后,捕获操作将终止。

当捕获操作完成时,CaptureCB 方法将调用一个 MediaFile 对象数组。如果用户在捕获图像之前终止操作,则会遇到 CaptureError.CAPTURE_NO_MEDIA_FILES 错误代码。

此方法支持多种平台,例如 Windows、AndroidiOS

示例

capture.captureVideo

capture.captureVideo 方法负责启动设备的视频录制应用程序。作为回报,此方法返回捕获的视频剪辑文件信息。

通过使用此方法启动异步操作,以使用设备的视频录制应用程序捕获视频录音。如果谈到异步操作,用户可以在单个会话中捕获多个视频录音。

捕获操作可在以下情况下结束

情况1:如果用户关闭视频录制应用程序。

情况2:如果达到 CaptureVideoOptions.limit 指定的最大视频录制数量。

CaptureVideoOptions.limit 的默认值为1。因此,录制单个视频剪辑后,捕获操作将终止。

当捕获操作完成时,CaptureCB 方法将调用一个 MediaFile 对象数组。如果用户在捕获视频之前终止操作,则会遇到 CaptureError.CAPTURE_NO_MEDIA_FILES 错误代码。

如果谈到此方法的兼容性,它支持多种平台,例如 Android、Windows、iOS。

示例

Capture.AudioOptions

Capture.AudioOptions 的主要任务是封装音频捕获配置选项。

性质

limit: limit 的默认值为1。它指用户在单个捕获操作中录制的音频剪辑的最大数量。limit 值必须大于或等于1。

duration: 它指音频剪辑的最大持续时间。以秒为单位表示。

示例

CaptureImageOptions

Capture.ImageOptions 的主要任务是封装图像捕获配置选项。

性质

limit: limit 的默认值为1。它指用户在单个捕获操作中捕获的图像的最大数量。limit 值必须大于或等于1。

示例

CaptureVideoOptions

Capture.VideoOptions 的主要任务是封装视频捕获配置选项。

性质

limit: limit 的默认值为1。它指用户在单个捕获操作中录制的视频剪辑的最大数量。limit 值必须大于或等于1。

duration: 它指视频剪辑的最大持续时间。以秒为单位表示。

示例

CaptureCB

当媒体捕获操作成功时,将调用 CaptureCB 方法。

此方法在完成成功的捕获操作后执行。捕获操作可在以下情况下结束:

情况1:如果用户退出媒体捕获应用程序。

情况2:如果达到捕获限制。用于描述捕获的媒体文件,使用 MediaFile 对象。

示例

CaptureError

当媒体捕获操作失败时,用于封装错误代码,使用 CaptureError

性质

code: 它指一些预定义的错误代码,可以是以下常量中的任何一个。

常量

CaptureError.CAPTURE_INTERNAL_ERR:当相机或麦克风无法捕获图像或声音时,显示此错误代码。

CaptureError.CAPTURE_APPLICATION_BUSY:此错误代码用于告知相机或音频捕获应用程序正忙于处理另一个捕获请求。

CaptureError.CAPTURE_INVALID_ARGUMENT:如果 API 使用无效,则抛出此错误代码。

CaptureError.CAPTURE_ NO_MEDIA_FILES:如果用户在捕获任何内容之前关闭相机或音频捕获应用程序,则抛出此错误代码。

CaptureError.CAPTURE_PERMISSION_DENIED:要执行捕获请求,我们必须获得权限。如果用户拒绝权限,则会抛出此错误代码。

CaptureError.CAPTURE_NOT_SUPPORTED:如果请求的捕获操作不受支持,则抛出此错误代码。

CaptureErrorCB

在媒体捕获操作期间,如果发生任何错误,将由 CaptureErrorCB 告知。

当您尝试启动媒体捕获操作时,可能会发生错误。然后,如果发生此特定错误,将执行此方法。此方法在以下情况下执行:

情况1:如果捕获应用程序繁忙或捕获操作已进行。

情况2:如果用户在捕获任何媒体文件之前取消操作。

此方法将使用包含错误代码的 CaptureError 对象执行。

示例

ConfigurationData

ConfigurationData 封装了设备支持的媒体捕获参数集。

还定义了设备支持的媒体捕获模式。MIME 类型以及图像和视频捕获的捕获尺寸包含在 ConfigurationData 中。

性质

type: 它表示一种媒体类型,其中包含 ASCII 编码的小写字符串。

height: 它包括图像或视频的高度。以像素为单位表示。

对于定义声音剪辑的高度,其值为零。

width: 它包括图像或视频的宽度。以像素为单位表示。对于定义声音剪辑的宽度,其值为零。

示例

MediaFile.getFormatData

MediaFile.getFormatData 方法用于检索媒体捕获文件的格式信息。

它执行异步尝试以获取媒体文件的格式信息。如果操作成功,将调用 MediaFileDataSuccessCB 回调并带有 MediaFileData 对象;如果失败,则调用 MediaFileDataErrorCB 回调。此方法支持多种平台,例如 Windows、Android、iOS

示例

MediaFile

用于封装媒体文件不同属性,使用此方法。

性质

name: 它用于表示文件的名称。

fullPath: 它指文件的完整路径及其名称。

type: 它考虑文件的 MIME 类型。

lastModifiedDate: 它指文件的上次修改日期和时间。

size: 它指文件的大小,以字节为单位表示。

方法

MediaFile.getFormatData: 用于检索媒体文件的格式信息,使用此 MediaFile.getFormatData 方法。

MediaFileData

用于封装媒体文件的格式信息,使用此方法。

性质

codecs: 此属性定义音频和视频内容的实际格式。

bitrate: 它主要由特定内容的平均比特率组成。对于图像,其值为零。

height: 它包括图像或视频的高度,以像素为单位表示。对于音频剪辑,其值为零。

width: 它包括图像或视频的宽度,以像素为单位表示。对于音频剪辑,其值设置为零。

duration: 它以秒为单位表示,包括视频或声音剪辑的长度。对于图像,其值为零。