【RT-Thread】mkromfs.py將音頻文件製作成C語言數組的虛擬文件

2022-01-02 嵌入式加油站


最近筆者在應用中科藍訊AB32VG1開要播放音頻文件, 看例程有音頻已轉換C數組數據, 但教程沒講方法,只是說:

首先需要下載 romfs.c(本文件包含了兩個音頻文件用於demo播放) 替換 applications 下原有的 romfs.c


問原廠(中科藍訊)技術支持, 也沒得到確定答案, 在網上找了很久, 沒找上方法, 聽原廠支持用mkromfs可以轉, romfs.c 注釋:

/* Generated by mkromfs. Edit with caution. */

複製代碼

也是說音頻文件數據是用mkromfs生成, 那堅信是用mkromfs生成音頻文件數據。


在網上找了很久,沒這個工具下載。差點就自己用C寫一個工具了,以後會這麼做的。


「眾裡尋他千百度 驀然回首 那人卻在燈火闌珊處」

「得來全不費工夫」

在每個rt-thread工程目錄都有rt-thread\tools\mkromfs.py (這個tools目錄下,也沒有很多python腳本工具, 沒用到,還不清楚它們的用法, 以後, 需要什麼工具,先在這裡找找。。。。。



看看是怎麼用的吧,首先,得有python環境,還有以前用過python, RT-Thread studio 配置及編譯工具都要用python, 之前沒安裝python 也沒關係,找到RT-Thread studio安裝目錄下, 也有python, 把python設置環境變量量, 相信搞開發的,這個都 會了, 不再贅述。

.\platform\env_released\env\tools\Python27

複製代碼



題外話:RT-Thread studio用的是Python2.7版本,應該升級一下了

看看這個mkromfs.py用法吧

在RTT工程目錄都有rt-thread\tools\目錄下,按住shift鍵,在空白處滑鼠右擊->在此處打開命令窗口

可快速,打開命令窗口定位到此目錄

輸入命令:

python mkromfs.py -h

複製代碼


第一次,使用命令, 不明白怎麼用, 都可以這樣的方法, 查看幫助,現用法介紹如下:

usage: mkromfs.py [-h] [--dump] [--binary] [--addr ADDR] rootdir [output]

positional arguments:

  rootdir      the path to rootfs

  output       output file name

optional arguments:

  -h, --help   show this help message and exit

  --dump       dump the fs hierarchy

  --binary     output binary file

  --addr ADDR  set the base address of the binary file, default to 0.

複製代碼




大概明白用法了

然後新建的一個目錄

mkdir wav

複製代碼



在wav目錄下, 放入要轉的wav格式的音頻文件。

再說說wav處理吧, 根據原廠(中科藍訊)技術支持的說法, 採樣率要求48KHz, 編碼格式 16bits PCM


把採樣率不是48KHz,轉成採樣率48KHz


然後,導出wav文件,選擇編碼格式 16bits PCM



生成romfs.c, 輸入命令:

python mkromfs.py wav romfs.c

複製代碼


把之前rt-thread工程裡romfs.c替換掉, 重新編譯。

燒錄開發板, 能播放了, 但聲音變了。

遺留疑難問題
聲音為什麼會變了呢? 採樣率話, 已經轉換了.

/****

**  您的點讚,在看,轉發,是我們寫下去動力。

**  動動您發財手,請幫忙點讚,在看,轉發

** 謝謝 抱抱

**/

相關焦點

  • 如何將RT-Thread移植到Cortex-M系列平臺Step by step
    RT-Thread的源碼可以從官網下載,具體方法為進入rt-thread的官網 http://www.rt-thread.org/,找到「入門」選項,單擊「下載」按鈕,進入下載頁。startup.c到Applications文件夾,這兩個文件的來源可以選擇其他BSP M3文件夾的文件,其中main函數在startup.c中,在startup.c中需要注意堆的處理,因為使用的是__CC__ARM,Image$$RW_IRAM1$$ZI$$Limit表示SRAM中除去從ROM搬來的數據和生成的變量後剩下的 空間,CM_SRAM_END=(SRAM_BASE + 128
  • RT-Thread快速入門-初探RT-Thread
    詳細了解 RT-Thread,可以訪問官方網站:https://www.rt-thread.orgRT-Thread 在線文檔網址為:https://www.rt-thread.org/document/site/#/image-202201011747489301.
  • 是的,RT-Thread 3.0.3發布了
    就本次全版本的更新來說,主要提高了系統的易用性,並在3.0.2的基礎上進行了一些bug的修復,下面撿主要的更新點來做個說明,更詳細的說明請移步Github查看ChangeLog文件。完善signal支持,增加rt_signal_wait函數(對應到POSIX sigwait接口);當打開finsh shell時,rtthread.h頭文件中主動包含finsh修訂rtdbg.h
  • 入門C語言中的數組,字符串常量與指針
    數組數組聲明為 數據類型 名稱[ constant-size ],並將一個數據類型的一個或多個實例分組到一個可尋址的位置,constant-size可能是一個表達式,但是該表達式必須求值為常量,例如: #define MAX_SIZE 16
  • 《RT-Thread驅動框架分析》-Pin驅動
    (LED0_PIN, PIN_MODE_OUTPUT);    while (count++)    {        rt_pin_write(LED0_PIN, PIN_HIGH);        rt_thread_mdelay(500);        rt_pin_write(LED0_PIN, PIN_LOW);        rt_thread_mdelay
  • RT-Thread Nano如何適配ADC設備API
    適配 ADC 設備驅動接口複製 RT-Thread 完整版工程中的 adc.h 文件(路徑:rt-thread\components\drivers\include\drivers\adc.h)到我們準備好的 STM32L431RCT6 的 RT-Thread Nano 基礎工程中。
  • RPlidar A1軟體包使用教程,RT-Thread 連接 RPlidar A1 雷射雷達
    在這個時間之前,大家只要把作品分享到自己的博客/其他論壇,並提交作品連結至📫郵箱:andychen@rt-thread.com,即可參與評選!請務必報名,否則會影響評選!在開始介紹之前,需要準備好這些東西:● 搭建好 RT-Thread 的環境 (Git, Env 工具, RT-Thread 源碼)● RPLidar A1 (或者其他A系列也可以)● STM32 (或者其他可以運行 RT-Thread 的開發板,需要有2個串口)https://www.rt-thread.org
  • bin文件轉換為hex文件C語言實現
    ,包括輸入的路徑可能存在不正確 RES_HEX_FILE_PATH_ERROR //目標文件路徑可能輸入有誤 } RESULT_STATUS; RESULT_STATUS BinFile2HexFile(char *src, char *dest);#endif新建bin2hex.c 文件#include "
  • keil C語言與彙編語言混合編程
    無參數傳遞的函數調用C51調用彙編函數1.無參數傳遞的函數調用先來個例子:其中example.c和example.a51為項目中的兩個文件*example.c*extern void delay100();main(){delay100;}*example.a51*?PR?
  • 微信語音怎麼製作轉換成MP3格式音頻文件
    很多人想知道微信語音怎麼製作並轉換成MP3格式音頻文件,但可能是出於不同的出發點,有的人是想把手機微信上「按住說話」所產生的微信語音消息轉換成MP3音頻文件,有的是想把實時微信語音通話錄音並製作成MP3格式文件,下面將分別向大家介紹一下操作方法。
  • MATLAB簡單粗暴教程(十)——MATLAB讀取非數據類型文件
    一般的RGB圖像讀進來之後是三個數組,分別RGB三種顏色。如果是灰度圖像,則是一個數組。如果是CMYK,則是四種顏色。默認是0-255,uint8格式。用im2double讀取圖像也可以,結果是0-1的double數組。im2int16、im2single 、 im2uint16、im2uint8都是類似的。對於GIF動畫,還可以逐幀進行讀取。對於帶有附加信息的圖片,Imread都可以將其讀出。
  • 分享你的程序,學會打包.py文件
    有的時候我們寫出一些實用的腳本,小程序想要分發給朋友同事們使用,但是沒有python環境是不能運行.py文件的,要運行的話先要有python解釋器,還要對照代碼下載相應的第三方包,這就很麻煩了。所以我們需要將.py文件打包為.exe文件,再分享出去就可以直接運行了。
  • keil c語言編程常見問題解析(一)
    一起走向智能工業革命時代,單片機DIY、基於c語言/彙編的編程。\ds18b20start.obj (DS18B20c/c++語言中有很多地方要用到extern,但是如果沒有真正的了解它的意義,會給編程帶來很大的麻煩,為了使大家少走彎路,特祥細的說明一下。      對於比較小的程序,一般只有一個c文件和一個頭文件,全局變量我們通常會直接定義在c文件中,在程序之前加int i定義。
  • Python處理音頻文件的實用姿勢
    音樂是人類的通用語言,不分國界不分種族。抖音短視頻爆火的關鍵因素之一,就是普通人也能便捷地使用BGM表達自我。其中,常用命令行參數如下:-c:指定編碼器-c copy:直接複製不編碼更快-c:v:指定視頻編碼器
  • 第六篇:C語言中結構體與文件操作相關知識點梳理
    前面總結過,C語言中的基本數據類型有四種,分別是整型、浮點型和字符型;後面又講到可以保存字符串的字符數組。但這遠遠不夠實際應用的需要。在C語言中結構體是對數據類型的無限擴展。程式設計師可以根據需要定義各種各樣的數據類型,即:結構體。問題二:數據無法永久保存前面我們編寫運行的所有C語言程序,或多或少都會輸入一些數據。
  • Python和C/C++交互的幾種方法總結
    它常被暱稱為膠水語言,它能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕鬆地聯結在一起。這篇文章主要給大家總結介紹了Python和C/C++交互的幾種方法,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
  • 計算機組成與設計---硬體/軟體接口---指令: 計算機的語言
    , rt, L1if (rs != rt)轉到標籤為L1的指令執行;j L12.6.1循環編譯器:編譯器將C程序轉換成一種機器能理解的符號形式的彙編語言程序彙編器:彙編器(或編譯器)把程序翻譯成機器語言提供從部分構建完整程序的信息目標文件頭:描述目標文件其他部分的大小和位置
  • 熊大生日特輯 | RT-Thread Family !一起來Party~
    所以今天大家購買柿餅派除了享受30元優惠以外,在GitHub(連結:https://github.com/RT-Thread/rt-thread)上點個star還可以再領10元優惠噢~合計40元優惠,直接在淘寶聯繫客服改價即可)  購買連結:【柿餅Pie 柿餅GUI 智能屏 非串口屏 RTThread GUI 顯示屏模組 4.3】https
  • C語言|字符串數組的初始化
    用單個字符初始化在這裡我們可以看到,存儲「hello」的字符串數組的大小應該至少為6的,但這裡我們發現把數組的大小設為5,程序也可以正常運行,如下圖所示。再小了就會報錯了但是,在用第一種方法,即直接用字符串賦值的時候卻要嚴格遵守字符串數組的大小規則此時程序報錯,有知道這是為什麼的朋友可以留言或者私信我在插入了』\0』之後,字符串就結束了也可以在其中插入回車符來實現換行的效果