学会这些 API,轻松开发 UniApp 音视频功能

UniApp 音频与视频处理详解

UniApp 提供了一系列强大的 API,用于音频与视频的录制、播放和管理。这些 API 能够帮助开发者快速实现多媒体功能,适用于聊天工具、音乐播放器、短视频应用等场景。本文详细介绍音频与视频相关 API 的作用、参数及示例代码。


一、音频处理

1. 录音功能(RecorderManager)

RecorderManager 是 UniApp 提供的录音管理器,用于控制录音的开始、暂停、停止等操作。

常用方法

方法 说明
start(options) 开始录音,传入配置参数。
stop() 停止录音,触发 onStop 回调,返回录音文件路径。
pause() 暂停录音。
resume() 恢复录音。
onStart() 监听录音开始事件。
onStop() 监听录音停止事件,返回录音结果(tempFilePath)。
onPause() 监听录音暂停事件。
onResume() 监听录音恢复事件。
onError() 监听录音错误事件。

配置参数(start 方法)

参数 类型 默认值 说明
duration Number 60000 最大录音时长(毫秒)。
sampleRate Number 8000 采样率,可选值:8000、16000、44100。
numberOfChannels Number 1 声道数,1 表示单声道,2 表示双声道。
encodeBitRate Number 24000 编码码率。
format String aac 音频格式,可选值:aacmp3

示例代码

const recorderManager = uni.getRecorderManager();

// 开始录音
function startRecording() {
    recorderManager.start({
        duration: 10000, // 最长10秒
        format: 'mp3',   // 音频格式
    });
    console.log("录音开始");
}

// 停止录音
recorderManager.onStop((res) => {
    console.log('录音停止:', res.tempFilePath); // 返回录音文件路径
});

// 错误处理
recorderManager.onError((err) => {
    console.log('录音错误:', err);
});

2. 播放音频功能(BackgroundAudioManager & InnerAudioContext)

(1)BackgroundAudioManager

适用于需要后台播放的场景,如音乐播放器。

常用方法
方法 说明
play() 播放音频。
pause() 暂停播放音频。
stop() 停止播放音频。
seek(time) 跳转到指定时间点播放。
属性说明
属性 类型 说明
src String 音频资源路径,必填。
title String 音频标题。
epname String 专辑名称。
singer String 歌手名称。
coverImgUrl String 音频封面图 URL。
示例代码
const backgroundAudioManager = uni.getBackgroundAudioManager();

backgroundAudioManager.src = 'https://example.com/song.mp3';
backgroundAudioManager.title = '背景音乐';
backgroundAudioManager.epname = '专辑名';
backgroundAudioManager.singer = '歌手名';

// 播放
backgroundAudioManager.play();

// 暂停
backgroundAudioManager.pause();

(2)InnerAudioContext

适用于短音频播放,如提示音。

示例代码
const audioContext = uni.createInnerAudioContext();
audioContext.src = 'https://example.com/sound.mp3';
audioContext.onPlay(() => console.log('音频播放开始'));
audioContext.onError((err) => console.log('音频播放错误:', err));

// 播放
audioContext.play();

二、视频处理

1. 录制视频(chooseVideo)

chooseVideo 是一个简单的方法,用于调用系统摄像头录制视频或从相册选择视频。

参数说明

参数 类型 默认值 说明
sourceType Array ['album', 'camera'] 视频来源:相册或摄像头。
maxDuration Number 60 视频最大录制时长(秒)。
camera String back 使用后置或前置摄像头。
compressed Boolean true 是否压缩视频文件。

示例代码

uni.chooseVideo({
    sourceType: ['camera'], // 从摄像头录制
    maxDuration: 30,        // 最长30秒
    success: (res) => {
        console.log('录制成功,视频路径:', res.tempFilePath);
    },
    fail: (err) => {
        console.log('录制失败:', err);
    }
});

2. 播放视频(video组件 & createVideoContext)

(1)video 组件

video 组件用于页面直接嵌入视频播放。

示例代码
<template>
    <view>
        <video 
            id="myVideo"
            src="https://example.com/video.mp4"
            controls
            autoplay
            style="width: 100%; height: 300px;">
        </video>
    </view>
</template>

(2)createVideoContext

用于操作页面的 video 组件,提供控制视频播放的功能。

常用方法
方法 说明
play() 播放视频。
pause() 暂停视频。
seek(time) 跳转到指定时间点播放。
示例代码
const videoContext = uni.createVideoContext('myVideo');

// 播放
videoContext.play();

// 暂停
videoContext.pause();

3. 选择本地视频(chooseVideo)

chooseVideo 方法也可以用于从相册中选择视频。

示例代码

uni.chooseVideo({
    sourceType: ['album'], // 从相册选择
    success: (res) => {
        console.log('选择的视频路径:', res.tempFilePath);
    },
    fail: (err) => {
        console.log('选择失败:', err);
    }
});

总结

UniApp 提供了灵活的音频与视频处理功能:

  • 录音功能 使用 RecorderManager 实现。
  • 音频播放 支持后台播放(BackgroundAudioManager)和短音频播放(InnerAudioContext)。
  • 视频处理 提供了录制(chooseVideo)、播放(video组件和createVideoContext)以及选择本地视频等能力。

合理使用这些 API,可以快速开发聊天工具、音乐播放器或短视频应用等多媒体功能。

posted @ 2024-11-23 19:00  Xmx11  阅读(18)  评论(0编辑  收藏  举报