HarmonyOS 鸿蒙Next中实现录制视频功能示例代码

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next中实现录制视频功能示例代码

介绍

本示例基于Camera Kit(相机服务)实现了使用手机摄像头进行视频的拍摄录制,并在首页进行视频的预览。

实现录制视频功能源码链接

效果预览

图片名称

使用说明

点击“录制视频”按钮会进入视频录制界面,视频录制结束,点击“返回”按钮返回首页,录制的视频会在首页按钮上方显示,点击视频可进行预览。

实现思路

视频录制

通过调用[@ohos.multimedia.camera](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-camera-V5)接口以及AVRecorder接口访问系统相机,实现录像和预览的基础操作。

  1. 初始化相机 首先通过camera.getCameraManager接口获取相机管理器实例实例,通过CameraDevice接口获取相机id、相机类型等相机设备信息。根据设备信息获取相机输出流,调整预览流分辨率的宽高比与输出流一致。创建相机输入流以及预览输出流,配置并启动会话。核心代码如下,源码参考Lx.ets。

    // 向会话中添加录像输出流
    try {
      this.captureSession.addOutput(this.videoOutput);
    } catch (error) {
      let err = error as BusinessError;
      console.error(`Failed to add videoOutput. error: ${JSON.stringify(err)}`);
    }
    
    // 提交会话配置
    try {
      await this.captureSession.commitConfig();
    } catch (error) {
      let err = error as BusinessError;
      console.error(`captureSession commitConfig error: ${JSON.stringify(err)}`);
    }
    
    // 启动会话
    try {
      await this.captureSession.start();
    } catch (error) {
      let err = error as BusinessError;
      console.error(`captureSession start error: ${JSON.stringify(err)}`);
    }
    
    // 启动录像输出流
    this.videoOutput.start((err: BusinessError) => {
      if (err) {
        console.error(`Failed to start the video output. error: ${JSON.stringify(err)}`);
        return;
      }
      console.log('Callback invoked to indicate the video output start success.');
    });
  2. 录制视频 调用avRecorder.start方法录制视频,核心代码如下,源码参考Lx.ets。

    async startRecord() {
      if (this.avRecorder) {
        // 开始录像
        try {
          await this.avRecorder.start();
        } catch (error) {
          let err = error as BusinessError;
          console.error(`avRecorder start error: ${JSON.stringify(err)}`);
        }
      }
    }

更多关于HarmonyOS 鸿蒙Next中实现录制视频功能示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS中实现录制视频功能,可以使用CameraKitMediaRecorder API。以下是一个简单的示例代码,展示如何在鸿蒙Next中实现视频录制:

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

// 初始化相机
let cameraManager = camera.getCameraManager();
let cameras = cameraManager.getSupportedCameras();
let cameraInput = cameraManager.createCameraInput(cameras[0]);

// 创建预览输出
let previewOutput = cameraManager.createPreviewOutput();

// 创建视频录制输出
let videoRecorder = media.createVideoRecorder();
let profile = {
    audioBitrate: 128000,
    audioChannels: 2,
    audioCodec: 'aac',
    audioSampleRate: 44100,
    fileFormat: 'mp4',
    videoBitrate: 2000000,
    videoCodec: 'h264',
    videoFrameWidth: 1920,
    videoFrameHeight: 1080,
    videoFrameRate: 30
};
videoRecorder.prepare(profile);

// 配置相机会话
let session = cameraManager.createCaptureSession();
session.beginConfig();
session.addInput(cameraInput);
session.addOutput(previewOutput);
session.addOutput(videoRecorder.getSurface());
session.commitConfig();
session.start();

// 开始录制视频
videoRecorder.start();

// 停止录制视频
videoRecorder.stop();

// 释放资源
videoRecorder.release();
session.stop();

此代码展示了如何在HarmonyOS中初始化相机、配置视频录制参数、启动和停止视频录制。CameraKit用于管理相机设备,MediaRecorder用于处理视频录制。通过createVideoRecorder方法创建视频录制器,并使用prepare方法配置录制参数。视频录制通过startstop方法控制。

更多关于HarmonyOS 鸿蒙Next中实现录制视频功能示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,可以使用Recorder类来实现视频录制功能。以下是一个简单的示例代码:

import ohos.media.recorder.Recorder;
import ohos.media.common.Source;

public class VideoRecorderExample {
    private Recorder recorder;

    public void startRecording(String outputPath) {
        recorder = new Recorder();
        recorder.setVideoSource(Recorder.VideoSource.SURFACE);
        recorder.setOutputFormat(Recorder.OutputFormat.MPEG_4);
        recorder.setVideoEncoder(Recorder.VideoEncoder.H264);
        recorder.setVideoSize(1920, 1080);
        recorder.setVideoFrameRate(30);
        recorder.setOutputFile(outputPath);

        recorder.prepare();
        recorder.start();
    }

    public void stopRecording() {
        if (recorder != null) {
            recorder.stop();
            recorder.release();
            recorder = null;
        }
    }
}

在这个示例中,startRecording方法配置并启动视频录制,stopRecording方法停止并释放录制资源。确保在manifest.json中申请必要的权限,如ohos.permission.MICROPHONEohos.permission.WRITE_MEDIA

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!