fdk-aac將aac格式轉為pcm數據

            int sampleRate = 44100; // 采樣率int sampleSizeInBits = 16; // 采樣位數,通常是16int channels = 2; // 通道數,單聲道為1,立體聲為2
FILE *m_fd = NULL;FILE *m_fd2 = NULL;HANDLE_AACDECODER decoder = aacDecoder_Open(TT_MP4_ADTS, 1);if (!decoder) {printf("Failed to open AAC decoder");return -1;}m_fd = fopen(s_acc.c_str(), "rb");m_fd2 = fopen(s_pcm.c_str(), "wb");decoder = aacDecoder_Open(TT_MP4_ADTS, 1);if (!decoder) {printf("Failed to open AAC decoder");return -1;}m_fd = fopen(s_acc.c_str(), "rb");m_fd2 = fopen(s_pcm.c_str(), "wb");unsigned int size = 1024;unsigned int valid;unsigned char *data = (unsigned char *) malloc(size);unsigned int decsize = 8 * 2048 * sizeof(INT_PCM);unsigned char *decdata = (unsigned char *) malloc(decsize);int frameCnt = 0;do {int len = fread(data, 1, size, m_fd);if (len <= 0) {break;}valid = len;AAC_DECODER_ERROR err = aacDecoder_Fill(decoder, &data, &size, &valid);//往aac內部緩存中填數據if (err != AAC_DEC_OK) {printf("Failed to fill AAC decoder: %d\n", err);break;}while (1) { //一定要加循環,一次有可能解碼不完導致數據丟失err = aacDecoder_DecodeFrame(decoder, (INT_PCM *) decdata, decsize / sizeof(INT_PCM),0);if (err != AAC_DEC_OK) {printf("Failed to DecodeFrame: %d\n", err);break;}//獲取解碼后碼流的信息CStreamInfo *info = aacDecoder_GetStreamInfo(decoder);printf("--------------------frameSize:%d ", info->frameSize);//輸出解碼數據大小printf("-------------------- sampleRate:%d ", info->sampleRate);//輸出解碼后采樣率printf("-------------------- numChannels:%d ", info->numChannels);//通道數printf("-------------------- aacSampleRate:%d ", info->aacSampleRate);//輸入aac數據采樣率//int flen = convert_16khz_to_8khz(tmp,decdata,info->frameSize*2); 重采樣需要可以到其他鏈接中獲取fwrite(decdata, 1,info->frameSize * 4,  m_fd2);frameCnt++;}} while (1);aacDecoder_Close(decoder);if (data)free(data);if (decdata)free(decdata);if (m_fd)fclose(m_fd);if (m_fd2)fclose(m_fd2);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15070.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15070.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15070.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

實戰之快速完成 ChatGLM3-6B 在 GPU-8G的 INT4 量化和本地部署

ChatGLM3 (ChatGLM3-6B) 項目地址 https://github.com/THUDM/ChatGLM3大模型是很吃CPU和顯卡的&#xff0c;所以&#xff0c;要不有一個好的CPU&#xff0c;要不有一塊好的顯卡&#xff0c;顯卡盡量13G&#xff0c;內存基本要32GB。 清華大模型分為三種(ChatGLM3-6B-Base&…

“大數據建模、分析、挖掘技術應用研修班”的通知!

隨著2015年9月國務院發布了《關于印發促進大數據發展行動綱要的通知》&#xff0c;各類型數據呈現出了指數級增長&#xff0c;數據成了每個組織的命脈。今天所產生的數據比過去幾年所產生的數據大好幾個數量級&#xff0c;企業有了能夠輕松訪問和分析數據以提高性能的新機會&am…

Vue3中為Ant Design Vue中table的checkbox加tooltip、popover

問題的產生 Vue版本&#xff1a;3.3.13 ant-design-vue 版本&#xff1a;3.x.x 在工作時遇到一個場景&#xff0c;需要在 ant-table 的 checkbox 被禁用的時候提示原因&#xff0c;但是在 ant-design-vue 文檔中并沒有發現有相關介紹。 首先我去看了issue中是否有提到相關問題…

【金磚賽】基于docker搭鏈

一&#xff0e;基于docker搭建 啟動并檢查是否啟動成功 #啟動命令 sudo systemctl start docker#檢查命令 sudo systemctl status docker修改權限 chomd 777 build_chain.sh 進行4節點聯盟鏈搭建&#xff08;舉例&#xff09; sudo ./build_chain.sh -d -l "127.0.0.1…

OOM不會導致JVM退出

問題來源 一次生產事故&#xff0c;由于一次性從數據庫查詢過多數據導致線程 OOM&#xff1a;Java heap space 異常&#xff08;千萬級表&#xff0c;JVM堆內存2G&#xff09;&#xff0c;但是在線程OOM發生時&#xff0c;java進程卻沒有立即掛掉。 ##OOM與異常 說到底OutOfM…

基于Android Studio記事本系統

目錄 項目介紹 圖片展示 運行環境 獲取方式 項目介紹 具有登錄&#xff0c;注冊&#xff0c;記住密碼&#xff0c;自動登錄的功能&#xff1b; 可以新增記事本&#xff0c;編輯&#xff0c;刪除記事本信息&#xff0c;同時可以設置主標題&#xff0c;內容&#xff0c;以及…

Ansible自動化運維中的Setup收集模塊應用詳解

作者主頁&#xff1a;點擊&#xff01; Ansible專欄&#xff1a;點擊&#xff01; 創作時間&#xff1a;2024年5月22日13點14分 &#x1f4af;趣站推薦&#x1f4af; 前些天發現了一個巨牛的&#x1f916;人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xf…

服務器沒有圖形界面沒有顯示器怎么辦

可以用vnc。 vnc是開元的。什么是vnc&#xff1f; 使用vnc 下載vnc和vncserver命令。 每生成一個圖形界面就叫做開啟session會話。 vnc相關命令&#xff1a; start a new session: vncserver。 如果沒有會話&#xff0c;一般從:1開始 端口5901 vncserver :2 #指定會話為:2 端…

WinForm+SQL Server+.NET開發菜鳥驛站管理系統

完整效果看嗶哩嗶哩&#xff0c;有需要其他系統&#xff0c;可以私信

Leecode熱題100---55:跳躍游戲(貪心算法)

題目&#xff1a; 給你一個非負整數數組 nums &#xff0c;你最初位于數組的 第一個下標 。數組中的每個元素代表你在該位置可以跳躍的最大長度。 判斷你是否能夠到達最后一個下標&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 貪心算…

Spring中的三級緩存和循環依賴

三級緩存 在 Spring 中&#xff0c;Bean 的創建過程涉及到三級緩存。這三級緩存分別是 singletonObjects、earlySingletonObjects 和 singletonFactories。它們在 Spring 容器啟動時用于存儲正在創建的 Bean 實例。 在 Spring 源碼中&#xff0c;三級緩存涉及到了 DefaultSin…

python02 循環與容器

一、if的條件判斷 1-1 if elif else 判斷年齡屬于哪個年齡段 # 判斷學生 core input(請輸入成績) ? if int(core) >90 :print(優秀) elif int(core) >70 and int(core) <90:print(中等) elif int(core) >60 and int(core) <70:print(及格) else:print(不及…

20240521在Ubuntu20.04下編譯RK3588的IPC方案的編譯環境問題makeinfo: not found

20240521在Ubuntu20.04下編譯RK3588的IPC方案的編譯環境問題makeinfo: not found 2024/5/21 20:52 viewproviewpro-ThinkBook-16-G5-IRH:~/RK3588_IPC_SDK$ sudo apt-get install texinfo viewproviewpro-ThinkBook-16-G5-IRH:~$ viewproviewpro-ThinkBook-16-G5-IRH:~$ md5su…

【Basic】Linux Labs

文章目錄 前言一、Linux Labs二、知識點ssh介紹ssh的主要功能SSH的工作原理SSH的常見用法 解題感悟 前言 由于我參加了網絡安全的比賽(被迫)… but我毛都不會&#xff0c;所以我只能臨時抱佛腳… 順便把學習的過程記錄下來&#xff0c;歡迎收看小白0基礎ctf踩坑分享 一、Linux…

【正點原子Linux連載】 第四十六章 M.2硬盤驅動實驗摘自【正點原子】ATK-DLRK3568嵌入式Linux驅動開發指南

1&#xff09;實驗平臺&#xff1a;正點原子ATK-DLRK3568開發板 2&#xff09;平臺購買地址&#xff1a;https://detail.tmall.com/item.htm?id731866264428 3&#xff09;全套實驗源碼手冊視頻下載地址&#xff1a; http://www.openedv.com/docs/boards/xiaoxitongban 第四十…

【selenium】自動化測試chrome webdriver驅動下載網址,V123版本以上

Hi&#xff0c;大家好&#xff0c;今天和大家分享下最新的selenium自動化測試&#xff0c;chrome瀏覽器驅動下載的最新地址 chrome webdriver下載網址&#xff0c;適用于瀏覽器版本V123以上

結構型模式 (Python版)

代理模式 from abc import ABC, abstractmethod# 買的行為&#xff08;抽象類&#xff09; class Buy(ABC):abstractmethoddef buy_ticket(self):pass# 男人&#xff08;具體類&#xff09; class Man(Buy):# 男人買票def buy_ticket(self):print("Man 買票成功&#xff…

【輸入示例100,999 輸出示例4】水仙花數

// “水仙花數”是指一個三位正整數&#xff0c;其各位上的數字的立方和等于該數本身。如:1^35^33^3153&#xff0c;因此153是一個水仙花數。輸入兩個三位正整數a和b(其中a<b)&#xff0c;求[a,b]范圍內水仙花數的個數。 //輸入示例100,999 //輸出示例4 #include <stdio.…

AI爆文寫作:如果你有一篇文章爆了,正確的做法是:自己抄襲自己,重復發,還可以繼續爆!

爆款總是相似的&#xff0c;如果你有一篇文章爆了&#xff0c;正確的做法&#xff0c;就是重復發&#xff0c;讓它繼續爆下去。 以前我在小紅書看到一個人&#xff0c;將一篇自己火的筆記&#xff0c;連續發了5次&#xff0c;每次點贊數據都不錯。 公眾號文章也是一樣的。 我…

Gin與OpenAPI(Swagger)的使用

一、背景 1、swagger與openapi Swagger&#xff1a; 一種用于描述RESTFUL API的規范&#xff0c;它提供了一種簡單的來描述API的請求和相應參數、錯誤碼、返回數據類型等信息&#xff0c;是開發者可以方便了解API使用方式。 官網: https://swagger.io/ OpenAPI : 始于 …