HarmonyOS鸿蒙Next中AVRecorder视频录制使用

HarmonyOS鸿蒙Next中AVRecorder视频录制使用 如何进行视频录制并时时获取YUV数据, 我查看了官方文档提供AVRecorder录制框架直接将数据封装到了文件, 有没有其他方式活着API能时时拿到视频流原始数据

4 回复

同问

更多关于HarmonyOS鸿蒙Next中AVRecorder视频录制使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,AVRecorder是用于视频录制的核心API。开发者可以通过AVRecorder实现视频的采集、编码和存储。AVRecorder支持多种视频格式和编码参数,开发者可以根据需求进行配置。

使用AVRecorder的基本步骤如下:

  1. 创建AVRecorder实例:通过createAVRecorder()方法创建AVRecorder对象。
  2. 配置录制参数:通过setVideoSource()setOutputFormat()setVideoEncoder()等方法设置视频源、输出格式、编码器等参数。
  3. 准备录制:调用prepare()方法进行录制前的准备工作。
  4. 开始录制:调用start()方法开始录制视频。
  5. 停止录制:调用stop()方法停止录制。
  6. 释放资源:调用release()方法释放AVRecorder占用的资源。

示例代码:

import media from '@ohos.multimedia.media';

let avRecorder;
let surfaceID; // 假设已经获取到Surface ID

// 创建AVRecorder实例
avRecorder = media.createAVRecorder();

// 配置录制参数
let config = {
    audioSourceType: media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
    videoSourceType: media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
    profile: {
        audioBitrate: 48000,
        audioChannels: 2,
        audioCodec: media.CodecMimeType.AUDIO_AAC,
        audioSampleRate: 48000,
        fileFormat: media.ContainerFormatType.CFT_MPEG_4,
        videoBitrate: 2000000,
        videoCodec: media.CodecMimeType.VIDEO_AVC,
        videoFrameWidth: 640,
        videoFrameHeight: 480,
        videoFrameRate: 30
    },
    url: 'file:///data/storage/el2/base/haps/entry/files/recording.mp4',
    rotation: 0,
    location: { latitude: 30, longitude: 130 }
};

avRecorder.setVideoSource(media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV, surfaceID);
avRecorder.setOutputFormat(config.profile.fileFormat);
avRecorder.setVideoEncoder(config.profile.videoCodec, config.profile.videoBitrate, config.profile.videoFrameWidth, config.profile.videoFrameHeight, config.profile.videoFrameRate);
avRecorder.setLocation(config.location.latitude, config.location.longitude);
avRecorder.setRotation(config.rotation);
avRecorder.setOutputFile(config.url);

// 准备录制
avRecorder.prepare();

// 开始录制
avRecorder.start();

// 停止录制
avRecorder.stop();

// 释放资源
avRecorder.release();

以上代码展示了如何在HarmonyOS鸿蒙Next中使用AVRecorder进行视频录制。开发者可以根据实际需求调整配置参数。

在HarmonyOS鸿蒙Next中,AVRecorder用于视频录制。首先,创建AVRecorder实例并配置参数,如视频源、输出格式、分辨率等。然后,设置录制文件的保存路径。调用prepare()方法准备录制,start()开始录制,stop()停止录制,release()释放资源。通过监听onError()onInfo()回调处理异常和状态信息。确保在Manifest中声明必要的权限,如ohos.permission.MICROPHONEohos.permission.WRITE_MEDIA

回到顶部