该小软件依赖 https://jingyan.eeboard.com/tags/sndfile 库, 首先安装该库:
查看原代码 https://jingyan.eeboard.com/article/76354#
sudo apt-get install libsndfile1-dev
接下来克隆小软件的源码:
查看原代码 https://jingyan.eeboard.com/article/76354#
Git clone https://github.com/ChristopheJacquet/PiFmRds.git
然后进行编译:
查看原代码 https://jingyan.eeboard.com/article/76354#
- cd PiFmRds/src
- make clean
- make
编译完成后, 输入以下命令运行程序
查看原代码 https://jingyan.eeboard.com/article/76354#
sudo ./pi_fm_rds
此时就会在树莓派的 GPIO 4 (40 针 P1 接口的第 7 管脚)上产生 FM 发射波, 默认频率 107.9, 这个辐射范围通常在 100 厘米左右, 增加 20cm 的杜邦线, 可以使得发射范围增加到 100 米.
在 pi_fm_rds 源码目录中有五个 wav 声音文件作为示例, 可以执行如下命令播放音频.
查看原代码 https://jingyan.eeboard.com/article/76354#
sudo ./pi_fm_rds -audio sound.wav -freq 100.6
此时就可以听到一段英文发音, 这个时间非常短, 只有 4 秒钟左右, 重复执行就可以多次听到了.
pi_fm_rds 更多的应用语法如下:
pi_fm_rds [-freq freq] [-audio file] [-ppm ppm_error] [-pi pi_code] [-ps ps_text] [-rt rt_text]
所有参数都是可选的:
-freq 指定载波频率(以 MHz 为单位). 例如:-freq 100.6.
-audio 指定一个音频文件作为音频播放. 如果提供立体声文件, 则 Pi-FM-RDS 将产生 FM 立体声信号. 例如:-audio sound.wav. 支持的格式取决于 libsndfile. 这包括 WAV 和 Ogg / Vorbis(等), 但不包括 MP3.
-pi 指定 RDS 广播的 PI 代码. 4 个十六进制数字. 例如:-pi FFFF.
-ps 指定 RDS 广播的电台名称(节目服务名称, PS). 限制: 8 个字符. 例如:-ps RASP-PI.
-rt 指定要传输的无线文本(RT). 限制: 64 个字符. 例如:-rt 'Hello, world!'.
-ctl 指定一个命名管道 (FIFO) 作为控制通道在运行时改变 PS 和 RT.
-ppm 以百万分率 (ppm) 为单位指定树莓派的振荡器误差.
如果使用参数 - audio -, 注意,-audio 后面是一个短横线, Pi-FM-RDS 将读取标准输入上的音频数据, 这允许您将程序的输出传送到 Pi-FM-RDS. 他有什么作用呢, 这就为我们播放 MP3 预留了接口, 例如, 这可以用于使用 Sox 读取 MP3 文件:
查看原代码 https://jingyan.eeboard.com/article/76354#
sox -t mp3 Music.mp3 -t wav - | sudo ./pi_fm_rds -audio -
这个操作的意思是使用 sox 工具读取 Music.mp3, 转换成 wav 格式并输出到标准输出, 同时使用 pi_fm_rds 来播放 (发射) 标准输入中的文件(流).
或者将声卡的 AUX 输入传送到 Pi-FM-RDS:
查看原代码 https://jingyan.eeboard.com/article/76354#
sudo arecord -fS16_LE -r 44100 -Dplughw:1,0 -c 2 - | sudo ./pi_fm_rds -audio -
CPU 使用情况如下:
添加音频时, CPU 使用率显著增加, 因为程序必须将输入音频文件的采样率采样到 228 kHz, 即其内部操作采样率, 这一动作还是非常消耗 CPU 资源的.
通过以上操作, 一个小小的私人电台就搭建好了, 但是在此重申, 搭建私人电台是违法行为, 自己短时间, 小范围的玩玩可以, 不要干扰了正常的 FM 频段, 否则后果很严重.
man sox
rec -c1 -r16000 xxx.wav 可以录制音频 c 指的是声道数 r 值得是采样率
play xxx.wav 播放
sox -V xxx.wav -n 查看 wav 文件的详细参数
example:16k 的音频降采样到 8k
sox -r 16000 input.wav -r 8000 output.wav
多个单通道合并为多通道: sox 1.wav 2.wav 3.wav -t wavpcm -M 4.wav # 4.wav 是 3 通道的
多个单通道融合为单通道: sox 1.wav 2.wav 3.wav -t wavpcm -m 4.wav # 4.wav 是单通道的
sox input.wav -c1 output.wav mixer -l
mp3 转 wav
1安装 sox:
- sudo apt-get install lame
- sudo apt-get install sox
- sudo apt-get install libsox-fmt-mp3
2转换方法
mp3/wav 等等格式转换成 ogg 格式:
打开终端, 输入: sox 1.mp3 1.ogg
wav 转换 mp3 格式:
打开终端, 输入: sox 1.wav 1.mp3
链接: https://www.jianshu.com/p/9fb24dc60f29
转载于:
来源: http://www.bubuko.com/infodetail-3012448.html