HarmonyOS鸿蒙Next中哪位大佬有使用AVCodec Kit进行音视频合并录制的demo啊

HarmonyOS鸿蒙Next中哪位大佬有使用AVCodec Kit进行音视频合并录制的demo啊 如题,网上使用AVCodec Kit进行录制的demo都是单独录制视频或单独录制音频,对c代码不熟悉,合不起来录制音视频,有大佬有音视频一起录制的demo吗,感谢!

2 回复

在鸿蒙Next中,使用AVCodec Kit进行音视频合并录制需创建媒体描述对象配置音视频源,初始化AVRecorder实例。关键步骤包括:设置outputFormat为MP4格式,配置视频编码参数(如H.264)、音频编码参数(如AAC),通过AVRecorder的prepare()和start()方法启动录制。AVCodec Kit的AVMuxer类可实现音视频数据同步写入。具体实现需参考HarmonyOS SDK中AVCodec Kit的API文档,调用addTrack()添加音视频轨道,writeSampleData()写入编码数据。

更多关于HarmonyOS鸿蒙Next中哪位大佬有使用AVCodec Kit进行音视频合并录制的demo啊的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


关于HarmonyOS Next中使用AVCodec Kit实现音视频合并录制的方案,可以这样实现:

  1. 基本流程:
  • 同时创建音频和视频录制器实例
  • 配置音视频参数(采样率、分辨率等)
  • 创建混合器(Muxer)将音视频流合并
  • 启动两个录制器并同步时间戳
  1. 关键代码示例:
// 创建音频录制器
OH_AVCodec *audioRecorder = OH_AVCodec_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_AAC);
// 创建视频录制器  
OH_AVCodec *videoRecorder = OH_AVCodec_CreateByMime(OH_AVCODEC_MIMETYPE_VIDEO_AVC);

// 配置混合器
OH_AVFormat *format = OH_AVFormat_Create();
OH_AVFormat_SetString(format, OH_MD_KEY_PATH, outputPath);
OH_AVMuxer *muxer = OH_AVMuxer_Create(format);

// 添加音视频轨道
int audioTrackIndex = OH_AVMuxer_AddTrack(muxer, audioFormat);
int videoTrackIndex = OH_AVMuxer_AddTrack(muxer, videoFormat);

// 启动录制
OH_AVMuxer_Start(muxer);
OH_AVCodec_Start(audioRecorder);
OH_AVCodec_Start(videoRecorder);

// 处理数据回调时同步写入混合器
void OnFrameAvailable(OH_AVCodec *codec, OH_AVMemory *data, OH_AVCodecBufferAttr *attr, void *userData) {
    if (codec == audioRecorder) {
        OH_AVMuxer_WriteSample(muxer, audioTrackIndex, data, attr);
    } else {
        OH_AVMuxer_WriteSample(muxer, videoTrackIndex, data, attr);
    }
}
  1. 注意事项:
  • 需要确保音视频的时间戳同步
  • 输出格式要支持音视频混合(如MP4)
  • 权限需要同时申请麦克风和相机权限

完整实现需要考虑更多细节如同步机制、错误处理等,建议参考DevEco Studio中的AVCodec Kit示例代码。

回到顶部