国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

RV1126 音頻開發(fā)(1)

這篇具有很好參考價值的文章主要介紹了RV1126 音頻開發(fā)(1)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

AI_CHN_ATTR_S ai_attr;
ai_attr.pcAudioNode = pDeviceName;
ai_attr.enSampleFormat = RK_SAMPLE_FMT_S16;
ai_attr.u32NbSamples = u32FrameCnt;
ai_attr.u32SampleRate = u32SampleRate;
ai_attr.u32Channels = u32ChnCnt;
ai_attr.enAiLayout = AI_LAYOUT_NORMAL;

音頻輸入屬性結(jié)構(gòu)體

  • pcAudioNode//音頻設(shè)備節(jié)點(diǎn)路徑

  • enSampleFormat

    • 采樣格式

    • typedef enum rkSample_Format_E {
      RK_SAMPLE_FMT_NONE = -1,
      RK_SAMPLE_FMT_U8,
      RK_SAMPLE_FMT_S16,
      RK_SAMPLE_FMT_S32,
      RK_SAMPLE_FMT_FLT,
      RK_SAMPLE_FMT_U8P,
      RK_SAMPLE_FMT_S16P,
      RK_SAMPLE_FMT_S32P,
      RK_SAMPLE_FMT_FLTP,
      RK_SAMPLE_FMT_G711A,
      RK_SAMPLE_FMT_G711U,
      RK_SAMPLE_FMT_NB
      } Sample_Format_E;
      
    • 不以P為結(jié)尾的都是interleaved結(jié)構(gòu),以P為結(jié)尾的是planar結(jié)構(gòu)

    • Planar模式是FFmpeg內(nèi)部存儲模式,我們實(shí)際使用的音頻文件都是Packed模式的。

    • AAC解碼輸出的數(shù)據(jù)為浮點(diǎn)型的 RK_SAMPLE_FMT_FLTP格式

    • MP3解碼輸出的數(shù)據(jù)為 RK_SAMPLE_FMT_S16P格式(使用的mp3文件為16位深)

  • u32NbSamples

    • 每幀的采樣點(diǎn)個數(shù)
    • 通常一幀是按1024個采樣點(diǎn)
  • u32SampleRate

    • 采樣率
    • 就是每秒對聲音進(jìn)行采集的次數(shù),同樣也是所得的數(shù)字信號的每秒樣本數(shù);44,100 Hz - 音頻 CD, 也常用于 MPEG-1 音頻(VCD, SVCD, MP3)所用采樣率
  • u32Channels

    • 通道數(shù)
    • 單通道、雙聲道、四聲道、5.1聲道
  • enAiLayout

    • 輸入布局類型

通過RK_MPI_AI_SetChnAttr設(shè)置音頻輸入通道屬性 ,然后RK_MPI_AI_EnableChn打開通道0

pthread_create創(chuàng)建線程去獲取數(shù)據(jù)流并保存

接著通過RK_MPI_AI_StartStream啟動音頻流

流程:

  • 設(shè)置音頻輸入通道屬性
  • 打開通道
  • 啟動音頻流
  • 創(chuàng)建線程去獲取數(shù)據(jù)流并保存

獲取數(shù)據(jù)流線程中通過從指定通道中獲取數(shù)據(jù) 然后fwrite往輸出音頻文件中寫數(shù)據(jù),最后關(guān)閉文件文章來源地址http://www.zghlxwxcb.cn/news/detail-436150.html

#include <assert.h>
#include <fcntl.h>
#include <pthread.h>
#include <signal.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

#include "rkmedia_api.h"

static bool quit = false;
static void sigterm_handler(int sig) {
  fprintf(stderr, "signal %d\n", sig);
  quit = true;
}

static void *GetMediaBuffer(void *path) {
  char *save_path = (char *)path;
  printf("#Start %s thread, arg:%s\n", __func__, save_path);
  FILE *save_file = fopen(save_path, "w");
  if (!save_file)
    printf("ERROR: Open %s failed!\n", save_path);

  MEDIA_BUFFER mb = NULL;
  int cnt = 0;
  while (!quit) {
    mb = RK_MPI_SYS_GetMediaBuffer(RK_ID_AI, 0, -1);
    if (!mb) {
      printf("RK_MPI_SYS_GetMediaBuffer get null buffer!\n");
      break;
    }

    printf("#%d Get Frame:ptr:%p, size:%zu, mode:%d, channel:%d, "
           "timestamp:%lld\n",
           cnt++, RK_MPI_MB_GetPtr(mb), RK_MPI_MB_GetSize(mb),
           RK_MPI_MB_GetModeID(mb), RK_MPI_MB_GetChannelID(mb),
           RK_MPI_MB_GetTimestamp(mb));

    if (save_file)
      fwrite(RK_MPI_MB_GetPtr(mb), 1, RK_MPI_MB_GetSize(mb), save_file);

    RK_MPI_MB_ReleaseBuffer(mb);
  }

  if (save_file)
    fclose(save_file);

  return NULL;
}


int main(int argc, char *argv[]) {
  RK_U32 u32SampleRate = 44100;
  RK_U32 u32ChnCnt = 1;
  RK_U32 u32FrameCnt = 1024;
  RK_S32 s32Volume = 100;
  // default:CARD=rockchiprk809co
  RK_CHAR *pDeviceName = "default";
  RK_CHAR *pOutPath = "/mnt/nfs/ai.pcm";
  int c;
  int ret = 0;

  printf("#Device: %s\n", pDeviceName);
  printf("#SampleRate: %u\n", u32SampleRate);
  printf("#Channel Count: %u\n", u32ChnCnt);
  printf("#Frame Count: %u\n", u32FrameCnt);
  printf("#Volume: %d\n", s32Volume);
  printf("#Output Path: %s\n", pOutPath);

  RK_MPI_SYS_Init();

  AI_CHN_ATTR_S ai_attr;
  ai_attr.pcAudioNode = pDeviceName;
  ai_attr.enSampleFormat = RK_SAMPLE_FMT_S16;
  ai_attr.u32NbSamples = u32FrameCnt;
  ai_attr.u32SampleRate = u32SampleRate;
  ai_attr.u32Channels = u32ChnCnt;
  ai_attr.enAiLayout = AI_LAYOUT_NORMAL;

  ret = RK_MPI_AI_SetChnAttr(0, &ai_attr);
  ret |= RK_MPI_AI_EnableChn(0);
  if (ret) {
    printf("Enable AI[0] failed! ret=%d\n", ret);
    return -1;
  }
  pthread_t read_thread;
  pthread_create(&read_thread, NULL, GetMediaBuffer, pOutPath);
  ret = RK_MPI_AI_StartStream(0);
  if (ret) {
    printf("Start AI failed! ret=%d\n", ret);
    return -1;
  }

  printf("%s initial finish\n", __func__);
  signal(SIGINT, sigterm_handler);

  while (!quit) {
    usleep(500000);
  }

  printf("%s exit!\n", __func__);
  RK_MPI_AI_DisableChn(0);

  return 0;
}

到了這里,關(guān)于RV1126 音頻開發(fā)(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【RV1126】移植kaldi實(shí)時語音識別

    【RV1126】移植kaldi實(shí)時語音識別

    參考:Greedy search與beam search 在下面會用到解碼的方法選擇 greedy_search :貪心搜索,貪心搜索是一種來自計算機(jī)科學(xué)的算法,生成第一個詞的分布以后,它將會根據(jù)你的條件語言模型挑選出最有可能的第一個詞進(jìn)入你的機(jī)器翻譯模型中,在挑選出第一個詞之后它將會繼續(xù)挑選出

    2024年02月04日
    瀏覽(24)
  • rv1126之isp黑電平(BLC)校準(zhǔn)!

    rv1126之isp黑電平(BLC)校準(zhǔn)!

    大家好,今天我們繼續(xù)來講解isp第二期內(nèi)容,這期內(nèi)容主要分三個部分: 1、tunning的工作流程 2、利用RKISP2.x_Tuner來創(chuàng)建tunning工程,并連接上rv1126開發(fā)板進(jìn)行抓圖 3、BLC(黑電平校準(zhǔn))的原理和校準(zhǔn)方法以及實(shí)戰(zhàn) 那對于RKISP2.x_Tuner的工具使用,這個在第一期的內(nèi)容里面有詳細(xì)的介

    2024年02月09日
    瀏覽(26)
  • rv1126調(diào)試串口改為登錄方式(加密)的方法

    rv1126調(diào)試串口改為登錄方式(加密)的方法

    把/etc/inittab 里面的::respawn:-/bin/sh 改為::respawn:-/bin/login \\\"/etc/inittab\\\"是系統(tǒng)初始化和運(yùn)行級別管理的配置文件。在該文件中,每個條目由四個字段構(gòu)成: id:指定要運(yùn)行的tty設(shè)備,如果為空,則表示運(yùn)行在/dev/console上。 runlevels:忽略字段,對BusyBox init無效。 action:指定進(jìn)程的執(zhí)

    2024年02月11日
    瀏覽(39)
  • RV1126筆記十二:實(shí)現(xiàn)RTMP單路拉流

    RV1126筆記十二:實(shí)現(xiàn)RTMP單路拉流

    若該文為原創(chuàng)文章,轉(zhuǎn)載請注明原文出處。 相比推流,拉流就簡單了一點(diǎn),只需要連接RTMP服務(wù)器,獲取流,把數(shù)據(jù)解碼出來顯示和播放就可以,使用的是易百納板子,測試時音頻輸出是不正常的,所以只解析了視數(shù)據(jù),不處理音頻。如果想測試音頻,建議用其他開發(fā)板,正

    2023年04月08日
    瀏覽(74)
  • rv1126移植并部署自寫手寫數(shù)字識別模型

    rv1126移植并部署自寫手寫數(shù)字識別模型

    --rknn_toolkit以及rknpu環(huán)境搭建-rv1126-CSDN博客 MNIST-https://github.com/warren-wzw/MNIST-pytorch.git 1:進(jìn)入docker docker run -t -i --privileged -v /dev/bus/usb:/de/bus/usb ? -v /home/wzw/rk_npu_sdk/rknn-toolkit-master-v1.7.3:/rknn_toolkit rknn-toolkit:1.7.3 /bin/bash 2:進(jìn)入/rknn_toolkit/examples/onnx,復(fù)制一個resnet50v2并命名為MNI

    2024年02月14日
    瀏覽(24)
  • RV1126筆記十三:實(shí)現(xiàn)RTMP多路拉流

    RV1126筆記十三:實(shí)現(xiàn)RTMP多路拉流

    若該文為原創(chuàng)文章,轉(zhuǎn)載請注明原文出處。 ? 通過RV1126實(shí)現(xiàn)RTMP的多路拉流,并在屏幕上顯示出來,這里涉及到ffmpeg幾個重要知識點(diǎn),和RV1126如何在屏幕分屏顯示。 ?流程和單路拉流類似,這里只是涉及拉取后的圖像需要解碼縮放,在合成分屏顯示出來。 具體看代碼。 屏幕顯

    2023年04月17日
    瀏覽(31)
  • rv1126/1109平臺下的lt8912顯示驅(qū)動的調(diào)試

    rv1126/1109平臺下的lt8912顯示驅(qū)動的調(diào)試

    使用的瑞芯微的rv1109的平臺,顯示接口為MIPI,需要外接LVDS的顯示屏,同時外接HDMI顯示屏顯示。 硬件調(diào)試注意事項(xiàng)如下: 檢查原理圖,確保原理圖正確。 檢查接口的電平匹配問題,LT8912 io最大支持1.8V,注意電平轉(zhuǎn)換問題(IIC,REST腳)。 檢查晶振是否振。 IIC不要強(qiáng)上拉,否

    2024年02月08日
    瀏覽(19)
  • rknn_toolkit以及rknpu環(huán)境搭建-rv1126

    rknn_toolkit以及rknpu環(huán)境搭建-rv1126

    rknn_toolkit安裝------------------------------------------------------------------------------- 環(huán)境要求:ubutu18.04 建議使用docker鏡像 安裝docker 參考https://zhuanlan.zhihu.com/p/143156163 鏡像地址 百度企業(yè)網(wǎng)盤-企業(yè)云盤-企業(yè)云存儲解決方案-同步云盤 rknn_toolkit目錄結(jié)構(gòu) docker load --input rknn-toolkit-1.7. 3 -d

    2024年02月10日
    瀏覽(19)
  • rk3588/rk356x/rv1109/rv1126 live555移植+mpp編譯 rtsp拉流

    rk3588/rk356x/rv1109/rv1126 live555移植+mpp編譯 rtsp拉流

    本文主要是為了記錄一下rk板子的踩坑日記。 項(xiàng)目主要是rk3588 rtsp拉流。 1.下載MPP源碼:https://github.com/rockchip-linux/mpp 2.rk3588/rk356x的板子進(jìn)入Mpp源碼目錄 mpp/build/linux/aarch64 (rk3588/rk356x是64位板子)中,修改 arm.linux.cross.cmake 文件中的配置 修改 make-Makefiles.bash 的配置,主要改

    2023年04月19日
    瀏覽(41)
  • MySQL交叉編譯ARM32位版本在RV1126上運(yùn)行

    MySQL交叉編譯ARM32位版本在RV1126上運(yùn)行

    想要編譯個ARM32位的MYSQL,找遍全網(wǎng)沒找到滿意答案,搞定后寫個文章方便后面參考 系統(tǒng)環(huán)境與關(guān)鍵位置信息 下載地址: https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.bz2 提示:版本和目標(biāo)系統(tǒng)版本一致,這里使用1.1.1f 下載地址: https://www.openssl.org/source/old/1.1

    2024年04月24日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包