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

专注网站平台推广公司wordpress 最近访客

专注网站平台推广公司,wordpress 最近访客,久久建筑网免费下载怎么没有了,资阳网页设计怎么做版式目录 一RV1126多线程获取音频编码AAC码流的流程 1.1AI模块的初始化并使能 1.2AENC模块的初始化 ​​​​​​​1.3绑定AI模块和AENC模块 ​​​​​​​1.4多线程获取每一帧AAC码流 ​​​​​​​1.5每个AAC码流添加ADTSHeader头部 ​​​​​​​1.6写入具体每一帧AAC的…目录 一RV1126多线程获取音频编码AAC码流的流程 1.1AI模块的初始化并使能 1.2AENC模块的初始化 ​​​​​​​1.3绑定AI模块和AENC模块 ​​​​​​​1.4多线程获取每一帧AAC码流 ​​​​​​​1.5每个AAC码流添加ADTSHeader头部 ​​​​​​​1.6写入具体每一帧AAC的ES码流 二代码实战 一RV1126多线程获取音频编码AAC码流的流程 上面是RV1126多线程获取AAC码流的流程分为六步AI模块的初始化并使能、AENC模块的初始化、绑定AI模块和AENC模块、创建多线程获取AAC码流、向每个AAC码流添加ADTSHeader头部(这个是重点)、写入具体每一帧AAC的ES码流。 1.1AI模块的初始化并使能 AI模块的初始化实际上就是对AI_CHN_ATTR_S的参数进行设置、然后调用RK_MPI_AI_SetChnAttr设置AI模块并使能RK_MPI_AI_EnableChn伪代码如下 AI_CHN_ATTR_S ai_chn_s; ai_chn_s.pcAudioNode AUDIO_PATH; ai_chn_s.u32Channels 2; ai_chn_s.u32NbSamples 1024; ai_chn_s.u32SampleRate 48000; ai_chn_s.enAiLayout AI_LAYOUT_NORMAL; ai_chn_s.enSampleFormat RK_SAMPLE_FMT_S16; ret RK_MPI_AI_SetChnAttr(AI_CHN, ai_chn_s); if(ret) { printf(RK_MPI_AI_SetChnAttr Failed...\n); } ret RK_MPI_AI_EnableChn(AI_CHN); if(ret) { printf(RK_MPI_AI_EnableChn Failed...\n); } ​​​​​​​1.2AENC模块的初始化 AENC模块的初始化实际上就是对AI_CHN_ATTR_S的参数进行设置、然后调用RK_MPI_AENC_CreateChn设置AENC模块伪代码如下 AENC_CHN_ATTR_S aenc_attr; aenc_attr.enCodecType RK_CODEC_TYPE_AAC; aenc_attr.u32Bitrate 64000; aenc_attr.u32Quality 1; aenc_attr.stAencAAC.u32Channels 2; aenc_attr.stAencAAC.u32SampleRate 48000; ret RK_MPI_AENC_CreateChn(AENC_CHN, aenc_attr); if (ret) { printf(Create AENC[0] failed! ret%d\n, ret); return -1; }else{ printf(Create AENC[0] success!\n); } ​​​​​​​1.3绑定AI模块和AENC模块 分别创建两个MPP_CHN_S结构体分别是AI模块的MPP_CHN_S和AENC模块的MPP_CHN_S创建完成之后则用RK_MPI_SYS_Bind对两个模块进行绑定 MPP_CHN_S ai_mpp_chn_s; ai_mpp_chn_s.enModId RK_ID_AI; ai_mpp_chn_s.s32ChnId 0; MPP_CHN_S aenc_mpp_chn_s; aenc_mpp_chn_s.enModId RK_ID_AENC; aenc_mpp_chn_s.s32ChnId 0; ret RK_MPI_SYS_Bind(ai_mpp_chn_s, aenc_mpp_chn_s); if (ret) { printf(RK_MPI_SYS_Bind Failed....\n); }else{ printf(RK_MPI_SYS_Bind Success....\n); } ​​​​​​​1.4多线程获取每一帧AAC码流 开启一个线程去采集每一帧AENC模块的数据使用的API是RK_MPI_SYS_GetMediaBuffer 模块ID是RK_ID_AENC通道号ID是AENC创建的通道ID号。这里需要注意的是要进行两层写入。第一层要进行adts header头部的写入第二层则需要进行adts es流的写入 .................................................... While(1) { mb RK_MPI_SYS_GetMediaBuffer(RK_ID_AENC, AENC_CHN, -1); if (!mb) { printf(Get Aenc_Buffer break...\n); break; } ................................... fwrite(aac_header, 1, 7, aac_file); //对每一帧AAC码流写入adts_header头部 fwrite(RK_MPI_MB_GetPtr(mb), 1, RK_MPI_MB_GetSize(mb), aac_file); //写入每一帧AAC的ES码流 } ....................................................... ​​​​​​​1.5每个AAC码流添加ADTSHeader头部 在写入AACES码流前需要对其进行ADTS Header的封装adts header头部分为adts_fixed_header和adts_variable_header。在对其写入的时候需要把这两个头部都一并写到码流上面。下面就是封装的具体方法。 typedef struct AacFreqIdx_ { RK_S32 u32SmpRate; RK_U8 u8FreqIdx; } AacFreqIdx; AacFreqIdx AacFreqIdxTbl[13] {{96000, 0}, {88200, 1}, {64000, 2}, {48000, 3}, {44100, 4}, {32000, 5}, {24000, 6}, {22050, 7}, {16000, 8}, {12000, 9}, {11025, 10}, {8000, 11}, {7350, 12}}; static void GetAdtsHeader(RK_U8 *pu8AdtsHdr, RK_S32 u32SmpleRate, RK_U8 u8ChannelRK_U32 u32DataLen) { RK_U8 u8FreqIdx 0; for (int i 0; i 13; i) { if (u32SmlpRate AacFreqIdxTbl[i].u32SmpRate) { u8FreqIdx AacFreqIdxTbl[i].u8FreqIdx; break; } } RK_U32 u32PacketLen u32DataLen 7; pu8AdtsHdr[0] 0xFF;    //主要是写入syncword同步字节的前8位 pu8AdtsHdr[1] 0xF1;   //主要是写入syncword同步字节的后4位,并且设置ID号、layer、protection_absent pu8AdtsHdr[2] ((AAC_PROFILE_LOW) 6) (u8FreqIdx 2) (u8Channel 2); //设置音频profile、sample_rate_index、声道数 pu8AdtsHdr[3] (((u8Channel 3) 6) (u32PacketLen 11)); //设置声道数original_copyhomecopyright_identification_bit、copyright_identification_start、aac_frame_length pu8AdtsHdr[4] ((u32PacketLen 0x7FF) 3);  //设置aac_frame_lengthadts_buffer_fullness pu8AdtsHdr[5] (((u32PacketLen 7) 5) 0x1F);//设置adts_buffer_fullness number_of_raw_data_blocks_in_frame pu8AdtsHdr[6] 0xFC; //设置 number_of_raw_data_blocks_in_frame } 上面这个方法需要传入四个参数分别是 第一个参数pu8AdtsHdr需要处理输出的字符串 第二个参数u32SampleRate音频的采样率(根据音频采样率去查找对应的采样率索引这里的索引是AacFreqIdx) 第三个参数u8Channel音频通道数 第四个参数u32DataLen每一帧aac码流的长度(这里需要注意的是在写入AAC码流的时候需要把每个AAC长度7因为头部是adts的头部是7个字节) 设置完成之后就要对每个码流进行7个字节头部的写入。 fwrite(aac_header, 1, 7, aac_file); //对每一帧AAC码流写入adts_header头部 ​​​​​​​1.6写入具体每一帧AAC的ES码流 在写入AAC头部之后就可以写入每一帧具体的AAC的ES码流 .................................................. fwrite(RK_MPI_MB_GetPtr(mb), 1, RK_MPI_MB_GetSize(mb), aac_file); //写入每一帧AAC的ES码流 二代码实战 #include assert.h #include fcntl.h #include getopt.h #include pthread.h #include signal.h #include stdbool.h #include stdio.h #include stdlib.h #include time.h #include unistd.h#include include/rkmedia/rkmedia_api.h #include include/rkmedia/rkmedia_buffer.h #include include/rkmedia/rkmedia_common.h #include rkmedia_api.h #define AUDIO_PATH default #define AI_CHN 0 #define AENC_CHN 0#define AAC_PROFILE_LOW 1typedef struct AacFreqIdx_ {RK_S32 u32SampleRate;RK_U8 u8FreqIdx; } AacFreqIdx;AacFreqIdx AacFreqIdxTbl[13] {{96000, 0}, {88200, 1}, {64000, 2}, {48000, 3}, {44100, 4}, {32000, 5}, {24000, 6}, {22050, 7}, {16000, 8}, {12000, 9}, {11025, 10}, {8000, 11}, {7350, 12}};static void GetAdtsHeader(RK_U8 *pu8AdtsHdr, RK_S32 u32SmpleRate, RK_U8 u8Channel,RK_U32 u32DataLen) {RK_U8 u8FreqIdx 0;for (int i 0; i 13; i){if (u32SmpleRate AacFreqIdxTbl[i].u32SampleRate){u8FreqIdx AacFreqIdxTbl[i].u8FreqIdx;break;}}RK_U32 u32PacketLen u32DataLen 7;pu8AdtsHdr[0] 0xFF; // 主要是写入syncword同步字节的前8位pu8AdtsHdr[1] 0xF1; // 主要是写入syncword同步字节的后4位,并且设置ID号、layer、protection_absentpu8AdtsHdr[2] ((AAC_PROFILE_LOW) 6) (u8FreqIdx 2) (u8Channel 2); // 设置音频profile、sample_rate_index、声道数pu8AdtsHdr[3] (((u8Channel 3) 6) (u32PacketLen 11)); // 设置声道数original_copyhomecopyright_identification_bit、copyright_identification_start、aac_frame_lengthpu8AdtsHdr[4] ((u32PacketLen 0x7FF) 3); // 设置aac_frame_lengthadts_buffer_fullnesspu8AdtsHdr[5] (((u32PacketLen 7) 5) 0x1F); // 设置adts_buffer_fullness number_of_raw_data_blocks_in_framepu8AdtsHdr[6] 0xFC; // 设置 number_of_raw_data_blocks_in_frame }void *get_audio_aenc_thread(void *args) {pthread_detach(pthread_self());FILE *aac_file fopen(test_capture.aac, w);MEDIA_BUFFER mb NULL;RK_U8 aac_header[7];while (1){mb RK_MPI_SYS_GetMediaBuffer(RK_ID_AENC, AENC_CHN, -1);if (!mb){printf(RK_MPI_SYS_GetMediaBuffer break....\n);break;}printf(Get AAC_Buffer Success...\n);//获取AENC的AAC码流头部GetAdtsHeader(aac_header, 48000, 2, RK_MPI_MB_GetSize(mb));fwrite(aac_header, 1, 7, aac_file); //写入7个字节的头部fwrite(RK_MPI_MB_GetPtr(mb),1, RK_MPI_MB_GetSize(mb), aac_file); //写入AAC的ES码流RK_MPI_MB_ReleaseBuffer(mb);} }int main(int argc, char *argv[]) {int ret;AI_CHN_ATTR_S ai_chn_s;ai_chn_s.pcAudioNode AUDIO_PATH; //音频采样路径ai_chn_s.u32SampleRate 48000; //音频采样率ai_chn_s.u32NbSamples 1024; //音频采样个数ai_chn_s.u32Channels 2; //音频采样通道ai_chn_s.enSampleFormat RK_SAMPLE_FMT_S16; //采样格式ai_chn_s.enAiLayout AI_LAYOUT_NORMAL; //采样布局ret RK_MPI_AI_SetChnAttr(AI_CHN, ai_chn_s); //设置AI属性if (ret){printf(RK_MPI_AI_SetChnAttr failed...\n);}else{printf(RK_MPI_AI_SetChnAttr success...\n);}ret RK_MPI_AI_EnableChn(AI_CHN); //使能AI模块if (ret){printf(RK_MPI_AI_EnableChn failed...\n);}else{printf(RK_MPI_AI_EnableChn success...\n);}AENC_CHN_ATTR_S aenc_chn_attrs; //AENCaenc_chn_attrs.enCodecType RK_CODEC_TYPE_AAC;//AENC模块的编码协议aenc_chn_attrs.u32Bitrate 64000; //音频编码比特率,64kbpsaenc_chn_attrs.u32Quality 1; //音频质量aenc_chn_attrs.stAencAAC.u32Channels 2; //音频通道数aenc_chn_attrs.stAencAAC.u32SampleRate 48000; //音频编码采样率这里要和AI模块的采样率一致ret RK_MPI_AENC_CreateChn(AENC_CHN, aenc_chn_attrs); //创建AENC模块if (ret){printf(RK_MPI_AENC_CreateChn failed....\n);}else{printf(RK_MPI_AENC_CreateChn success....\n);}MPP_CHN_S ai_mpp_chn_s;ai_mpp_chn_s.enModId RK_ID_AI;ai_mpp_chn_s.s32ChnId AI_CHN;MPP_CHN_S aenc_mpp_chn_s;aenc_mpp_chn_s.enModId RK_ID_AENC;aenc_mpp_chn_s.s32ChnId AENC_CHN;ret RK_MPI_SYS_Bind(ai_mpp_chn_s, aenc_mpp_chn_s); //绑定AI模块和AENC模块if (ret){printf(RK_MPI_SYS_Bind failed....\n);}else{printf(RK_MPI_SYS_Bind success....\n);}pthread_t pid;pthread_create(pid, NULL, get_audio_aenc_thread, NULL); //创建线程获取AENC码流while (1){sleep(2);}RK_MPI_SYS_UnBind(ai_mpp_chn_s, aenc_mpp_chn_s);RK_MPI_AENC_DestroyChn(AENC_CHN);RK_MPI_AI_DisableChn(AI_CHN);return 0; }
文章转载自:
http://www.morning.rwqk.cn.gov.cn.rwqk.cn
http://www.morning.fypgl.cn.gov.cn.fypgl.cn
http://www.morning.mcjyair.com.gov.cn.mcjyair.com
http://www.morning.ksqyj.cn.gov.cn.ksqyj.cn
http://www.morning.ryyjw.cn.gov.cn.ryyjw.cn
http://www.morning.fcqlt.cn.gov.cn.fcqlt.cn
http://www.morning.cbqqz.cn.gov.cn.cbqqz.cn
http://www.morning.myfwb.cn.gov.cn.myfwb.cn
http://www.morning.kmlmf.cn.gov.cn.kmlmf.cn
http://www.morning.ypjjh.cn.gov.cn.ypjjh.cn
http://www.morning.gsrh.cn.gov.cn.gsrh.cn
http://www.morning.fxzlg.cn.gov.cn.fxzlg.cn
http://www.morning.qqhfc.cn.gov.cn.qqhfc.cn
http://www.morning.dfbeer.com.gov.cn.dfbeer.com
http://www.morning.jrqcj.cn.gov.cn.jrqcj.cn
http://www.morning.czwed.com.gov.cn.czwed.com
http://www.morning.qstkk.cn.gov.cn.qstkk.cn
http://www.morning.jlxld.cn.gov.cn.jlxld.cn
http://www.morning.kldtf.cn.gov.cn.kldtf.cn
http://www.morning.nnwmd.cn.gov.cn.nnwmd.cn
http://www.morning.nwzcf.cn.gov.cn.nwzcf.cn
http://www.morning.dqwykj.com.gov.cn.dqwykj.com
http://www.morning.rlnm.cn.gov.cn.rlnm.cn
http://www.morning.zkzjm.cn.gov.cn.zkzjm.cn
http://www.morning.sgnxl.cn.gov.cn.sgnxl.cn
http://www.morning.zbjfq.cn.gov.cn.zbjfq.cn
http://www.morning.jzfxk.cn.gov.cn.jzfxk.cn
http://www.morning.mhmcr.cn.gov.cn.mhmcr.cn
http://www.morning.ctxt.cn.gov.cn.ctxt.cn
http://www.morning.pjftk.cn.gov.cn.pjftk.cn
http://www.morning.pwqyd.cn.gov.cn.pwqyd.cn
http://www.morning.lkfsk.cn.gov.cn.lkfsk.cn
http://www.morning.krhkn.cn.gov.cn.krhkn.cn
http://www.morning.xfjwm.cn.gov.cn.xfjwm.cn
http://www.morning.gstmn.cn.gov.cn.gstmn.cn
http://www.morning.srgyj.cn.gov.cn.srgyj.cn
http://www.morning.gjssk.cn.gov.cn.gjssk.cn
http://www.morning.ckhry.cn.gov.cn.ckhry.cn
http://www.morning.kstgt.cn.gov.cn.kstgt.cn
http://www.morning.bpmnj.cn.gov.cn.bpmnj.cn
http://www.morning.qtyfb.cn.gov.cn.qtyfb.cn
http://www.morning.pzrnf.cn.gov.cn.pzrnf.cn
http://www.morning.lqws.cn.gov.cn.lqws.cn
http://www.morning.gwxwl.cn.gov.cn.gwxwl.cn
http://www.morning.cxnyg.cn.gov.cn.cxnyg.cn
http://www.morning.swkpq.cn.gov.cn.swkpq.cn
http://www.morning.lwyqd.cn.gov.cn.lwyqd.cn
http://www.morning.trrd.cn.gov.cn.trrd.cn
http://www.morning.lwzgn.cn.gov.cn.lwzgn.cn
http://www.morning.krdmn.cn.gov.cn.krdmn.cn
http://www.morning.tslwz.cn.gov.cn.tslwz.cn
http://www.morning.ltrz.cn.gov.cn.ltrz.cn
http://www.morning.ypxyl.cn.gov.cn.ypxyl.cn
http://www.morning.dlmqn.cn.gov.cn.dlmqn.cn
http://www.morning.brjq.cn.gov.cn.brjq.cn
http://www.morning.lctrz.cn.gov.cn.lctrz.cn
http://www.morning.sqqkr.cn.gov.cn.sqqkr.cn
http://www.morning.jzsgn.cn.gov.cn.jzsgn.cn
http://www.morning.rlqml.cn.gov.cn.rlqml.cn
http://www.morning.yqgny.cn.gov.cn.yqgny.cn
http://www.morning.jtcq.cn.gov.cn.jtcq.cn
http://www.morning.zwznz.cn.gov.cn.zwznz.cn
http://www.morning.ycwym.cn.gov.cn.ycwym.cn
http://www.morning.hdlhh.cn.gov.cn.hdlhh.cn
http://www.morning.thwhn.cn.gov.cn.thwhn.cn
http://www.morning.mbqyl.cn.gov.cn.mbqyl.cn
http://www.morning.fwqgy.cn.gov.cn.fwqgy.cn
http://www.morning.fglyb.cn.gov.cn.fglyb.cn
http://www.morning.jjpk.cn.gov.cn.jjpk.cn
http://www.morning.xqcgb.cn.gov.cn.xqcgb.cn
http://www.morning.ngzkt.cn.gov.cn.ngzkt.cn
http://www.morning.ysskn.cn.gov.cn.ysskn.cn
http://www.morning.qqklk.cn.gov.cn.qqklk.cn
http://www.morning.wlstn.cn.gov.cn.wlstn.cn
http://www.morning.yrbq.cn.gov.cn.yrbq.cn
http://www.morning.lfjmp.cn.gov.cn.lfjmp.cn
http://www.morning.tslfz.cn.gov.cn.tslfz.cn
http://www.morning.nrfqd.cn.gov.cn.nrfqd.cn
http://www.morning.wzyfk.cn.gov.cn.wzyfk.cn
http://www.morning.mggwr.cn.gov.cn.mggwr.cn
http://www.tj-hxxt.cn/news/241980.html

相关文章:

  • 网站发布流程山东百度推广代理商
  • 南宁营销型网站建设公司哪家好国外游戏ui设计网站
  • 官网整站优化wordpress主题 摄影师
  • 如何弄自己的公司网站an网站建设
  • nodejs网站开发实例做软件的叫什么职业
  • 宜兴市的城乡建设管理局网站cf小号自助购买网站
  • 如何做移动支付网站开封网站建设价格
  • 单页网站建设哪里有提供自己买服务器做网站
  • 做网站麻烦吗英文网站建设公司 杭州
  • 无障碍网站建设的摘要品牌宣传方式
  • 西安企业建站排名排名好的网站建设企业
  • 网站的功能和作用如何开心设计一个网站
  • 做网站怎么改关键词利用渗透的网站做寄生虫
  • 化妆品网站建设说明营销推广运营 网站
  • 旅游网站的制作深圳建设花了多少钱
  • 曲周专业做网站商城网站开发价
  • 怎么自己做网站发优惠券前端开发培训机构哪个好
  • 一个网站怎么推广宁波公司网站开发招聘
  • 百度整站优化百度推广手机登录
  • 检察机关门户网站建设工作自查报告wordpress 编辑权限
  • 北京建站模板展示网站建设内容保障工作个人总结
  • 男男做视频网站龙岩网站制作设计
  • 网站的域名技巧和空间选择电商网站设计论文
  • 全球前10网站开发语言工作组赴河南协助
  • 服装加工厂网站建设方案计划书沈阳网页设计公司有哪些
  • 成都网站建设餐饮wordpress 文章自定义排序
  • 网站型和商城型有什么区别室内装修设计书籍
  • 美业网站网站建设公司专业
  • 访问网站详细过程新网站需要加锚文本吗
  • 哪家网站建设好门户网站建设管理工作自查报告