谷动谷力

 找回密码
 立即注册
查看: 2329|回复: 0
收起左侧

【RT-Thread】mkromfs将音频文件制作成C语言数组的虚拟文件

[复制链接]
发表于 2021-12-9 23:13:58 | 显示全部楼层 |阅读模式
【RT-Thread】mkromfs.py将音频文件制作成C语言数组的虚拟文件( O# a0 |& c8 E! D
; T; M+ W* u3 o! P7 q
最近笔者在应用中科蓝讯AB32VG1开要播放音频文件, 看例程有音频已转换C数组数据, 但教程没讲方法,只是说:% @8 i7 P$ k1 Q( B
首先需要下载 romfs.c(本文件包含了两个音频文件用于demo播放) 替换 applications 下原有的 romfs.c
- }$ Y. h0 m: y+ Y/ H
, W( ^% \7 _9 M3 F4 g3 m/ X
问原厂(中科蓝讯)技术支持, 也没得到确定答案, 在网上找了很久, 没找上方法, 听原厂支持用mkromfs可以转, romfs.c 注释:& H+ d: b$ V! h* Z6 c! Y7 N
  1. /* Generated by mkromfs. Edit with caution. */
复制代码
也是说音频文件数据是用mkromfs生成, 那坚信是用mkromfs生成音频文件数据。3 Y) x+ `' W3 R/ F, l( X2 F. s: Q3 [" T
4 ]* Y% f) |. J5 n9 i9 T5 L. N: n
( ]1 S& Z5 p3 ^  c  j
在网上找了很久,没这个工具下载。 差点就自己用C写一个工具了,以后会这么做的。
" ~# B* w! s7 k% E. m4 w  _! u) z2 c9 E4 y7 ~

, \5 O& o) m0 k) Z9 U% A“众里寻他千百度 蓦然回首 那人却在灯火阑珊处”' Q+ B# q% R; R0 H& H0 n+ w# [
' d5 A# y+ t+ e
“得来全不费工夫”' n6 P; I+ ?8 A# F( |

9 U: s! l! ^' B% J在每个rt-thread工程目录都有rt-thread\tools\mkromfs.py (这个tools目录下,也没有很多python脚本工具, 没用到,还不清楚它们的用法, 以后, 需要什么工具,先在这里找找。。。。。
1 _& }5 h8 h$ Y% f0 P( X# w' ^- M3 c* K7 @
mkromfs.png
$ p  y+ z0 V( r3 v3 i$ Z
5 Y+ B. ~* [$ U  _/ I看看是怎么用的吧,首先,得有python环境,还有以前用过python, RT-Thread studio 配置及编译工具都要用python, 之前没安装python 也没关系,找到RT-Thread studio安装目录下, 也有python, 把python设置环境变量量, 相信搞开发的,这个都 会了, 不再赘述。, X' L, H4 G  ?/ P/ k9 D
3 P9 H8 a8 ?- I& j- a" e
  1. .\platform\env_released\env\tools\Python27
复制代码
3 E: h( I  \( S( r, X; ~) h$ ^

3 C, ^1 G3 U/ q; N; g6 A2 v题外话:RT-Thread studio用的是Python2.7版本,应该升级一下了2 J3 J! _& @9 P' p2 L3 A0 y' X8 \* X

+ P9 d0 [8 v; h. j看看这个mkromfs.py用法吧
; @: N4 X# k, C# h3 n- c
, c+ M$ a" J7 K) _3 t* b$ l0 ~在RTT工程目录都有rt-thread\tools\目录下,按住shift键,在空白处鼠标右击->在此处打开命令窗口: L3 [4 O5 l; q2 }' ~( E; d
cmd.JPG
4 u/ k) w( K4 U' _5 Q可快速,打开命令窗口定位到此目录
6 Q+ b: c, I( O; p" N! I3 v7 [+ Z4 D  ?# W* |
输入命令:3 i  o; r5 `& K( u) N
  1. python mkromfs.py -h
复制代码

2 c+ m- ]) Q# _8 l$ D3 k1 O* [第一次,使用命令, 不明白怎么用, 都可以这样的方法, 查看帮助,现用法介绍如下:0 o$ {+ P3 H0 r) c/ d+ w# R
  1. usage: mkromfs.py [-h] [--dump] [--binary] [--addr ADDR] rootdir [output]
    $ t0 j' P% O5 s1 o) ^, T

  2. . N" r) j% u5 @4 z
  3. positional arguments:' n% G; K9 ~- _5 ~6 s; r  t' C
  4.   rootdir      the path to rootfs
    ' Q  ^. ^6 ^6 l/ o( k* s" Z
  5.   output       output file name) ?1 {6 @5 O! l" v

  6. 1 m" m) J$ ^1 j! ?/ K9 ]* }8 J
  7. optional arguments:4 g; I) T) d, k( ?4 M
  8.   -h, --help   show this help message and exit
    3 X( ?/ ]3 L& f, o+ @
  9.   --dump       dump the fs hierarchy; ]: k; J2 Z7 }0 J/ S; [
  10.   --binary     output binary file' Z0 H* }$ m. P2 r6 j
  11.   --addr ADDR  set the base address of the binary file, default to 0.
复制代码
cmd1.JPG
% K5 j& z9 ]' p+ N& w: h0 |
( q* ?) A$ K4 @6 V9 B7 o/ G5 C4 L9 C7 u6 \7 N7 l. o( B4 i1 e2 p: Q
大概明白用法了
3 K: [$ s  t  y( W/ s( e
# p, T4 q* w+ W5 w然后新建的一个目录 ! ^4 H9 w" w! ~6 N6 b6 M6 r5 M/ J- U

( U) W( Y8 X3 a3 {$ c6 i, f2 T* L3 R
  1. mkdir wav
复制代码
8 B" a* A" k! B4 C  e

5 q, e9 Q0 h& |+ A2 h在wav目录下, 放入要转的wav格式的音频文件。6 U2 V; {. M  |) y
* q1 h6 ?0 B; ?8 d  x
再说说wav处理吧, 根据原厂(中科蓝讯)技术支持的说法, 采样率要求48KHz, 编码格式 16bits PCM
+ V+ j- N4 b. O& Q/ h4 h
$ S* U2 M  }0 Y- P" v' @
/ @6 ]0 E) ^5 d! h9 P, f! N% w  F把采样率不是48KHz,转成采样率48KHz# k' P* J2 G( ]' H5 q- A1 O0 j) b7 `
caiyang.png
- g/ y! F/ ]. B; m8 _0 g1 H7 r! j6 P% d) o  Z: \1 L
然后,导出wav文件,选择编码格式 16bits PCM
& w& y; H. f+ d- Q% Z& ^- a6 W) I) B' P0 `$ w. b  W
export_wav.JPG 4 U4 t+ a& x1 m' k. `; x
  K! h. h; Z- p- V/ E  Z3 `
生成romfs.c, 输入命令:& W( C: C' U, F/ Y
  1. python mkromfs.py wav romfs.c
复制代码

( f1 @* q5 x% ~0 X4 ~1 a# h把之前rt-thread工程里romfs.c替换掉, 重新编译。0 G' {8 @$ Q. `( P9 R

' R4 a1 g- a# t% f6 P# p  Z烧录开发板, 能播放了, 但声音变了。. z- }6 j& j- D

  |2 {- b# ]: k( I遗留疑难问题: e. W; u' u2 S4 a+ U+ ?4 A, }
声音为什么会变了呢? 采样率话, 已经转换了.# V- n" ]0 Y( Q* c9 n

3 _6 l1 y  m5 O/ Z
" x) c( X4 Z( o7 x) ~% E$ n# o( {* ~: w

! j/ I# d2 g. w0 L  t- e
1 _; u! X: S, A
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-3-29 19:55 , Processed in 0.100017 second(s), 36 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表