当前位置: 首页 > article >正文

RV1126+FFMPEG推流项目(7)AI音频模块编码流程

一、AI 模块和外设麦克风的关系

AI 模块是 RV1126 芯片的一个重要组成部分。它的主要功能是将外部接入的麦克风采集到的模拟信号通过内置的驱动程序转换为数字信号。这意味着麦克风作为外设,提供音频输入信号,AI 模块通过其硬件和软件的结合,负责对这些信号的处理和转换。

        音频编码流程主要分三步:AI的初始化、AENC的初始化(硬件编码)绑定AI和AENC节点开启AENC线程进行视频编码的采集,注意一下这里的编码是硬件编码,不是使用ffmpeg软件编码。和视频的流程差不多

        在第三篇的时候,已经介绍过了这RV1126_AI_CONFIG、RV1126_AENC_CONFIG这两个数据结构。回顾一下。


RV1126_AI_CONFIG:

typedef struct
{
    unsigned int id;   ///< 音频通道ID,用于标识不同的音频输入通道
    AI_CHN_ATTR_S attr; ///< 音频通道属性,包含通道的具体配置信息
} RV1126_AI_CONFIG;

        里面有一个最重要的成员AI_CHN_ATTR_S,是AI模块的数据结构体。

 编码:rkmedia_module_function.cpp

    //AI模块
    RV1126_AI_CONFIG rv_ai;
    memset(&rv_ai, 0, sizeof( RV1126_AI_CONFIG)); //清空结构体
    rv_ai.id = 0; //AI模块采集通道
    rv_ai.attr.pcAudioNode = AUDIO_PATH; //默认是default,音频alsa路径
    rv_ai.attr.enSampleFormat = RK_SAMPLE_FMT_S16; //音频采样深度。
    rv_ai.attr.enAiLayout = AI_LAYOUT_NORMAL; //音频布局,默认是2
    rv_ai.attr.u32NbSamples = NB_SAMPLES; //AAC默认1024
    rv_ai.attr.u32SampleRate = 48000;//音频采样率
    rv_ai.attr.u32Channels = 2; //音频通道数
    ret =rkmedia_ai_init(&rv_ai); //
    if(ret != 0)
    {
        printf("ai模块初始化\n");
    }
    else
    {
        printf("ai模块创建成功\n");
        //把音频的通道号id保存到容器
        RV1126_AI_CONTAINER ai_container;
        ai_container.id = 0;
        ai_container.ai_id = rv_ai.id; //保存进去
        set_ai_container(0, &ai_container);//设置AI容器
    }

        基本编码流程也是和视频差不多。


http://www.kler.cn/a/508370.html

相关文章:

  • PG vs MySQL mvcc机制实现的异同
  • 【转】厚植根基,同启新程!一文回顾 2024 OpenHarmony 社区年度工作会议精彩瞬间
  • 无降智o1 pro——一次特别的ChatGPT专业模式探索
  • vue编写一个可拖动的模块,并可以和任何其他组件组合使用
  • Vue项目搭建教程超详细
  • 职场沟通与行为
  • 游戏引擎学习第80天
  • VTK知识学习(36)-图像平滑
  • 【spark源码修改】hive3.1.3 spark3.5.4编译,需要修改源码,最终编译成功
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之一维数组(应用技巧)
  • linux 国产化命令
  • 算法随笔_10: 供暖器
  • Linux网络 TCP socket
  • 一体机cell服务器更换内存步骤
  • java 小红书源码 1:1还原 uniapp
  • 小识MySQL中的OLTP和OLAP
  • 全类别机器人传感器模块推荐
  • RK3568笔记七十五:FFMPEG交叉编译
  • Rnote:Star 8.6k,github上的宝藏项目,手绘与手写画图笔记,用它画图做笔记超丝滑,值得尝试!
  • 如何在 ASP.NET Core 中实现速率限制?
  • [JavaScript] 变量与数据类型:从基础到进阶
  • C++第十五讲:异常
  • 春秋杯-WEB
  • maven 微服务项目多 包版本问题
  • 【张雪峰高考志愿填报】合集
  • 职场沟通与行为