rtl_fm管道输出至sox异常退出、提示WAVE RIFF头未找到问题求助
问题原因
- 频率参数格式错误:你命令里写的频率参数是
$137M,多余的$符号导致rtl_fm无法正确解析目标频率,从输出日志可以看到最终调谐到了37480000 Hz,和你预期的137MHz完全不符,参数错误拉长了rtl_fm的初始化流程,甚至导致输出流格式异常。 - 管道时序不匹配:
rtl_fm启动后需要先完成硬件识别、调谐、增益设置等一系列硬件操作,才会输出带完整RIFF头的WAV格式流;但管道另一端的sox启动后会立即读取输入的头部信息,等不到合法WAV头就会直接报错退出,管道断开后rtl_fm也会收到终止信号退出。
修复方案
- 首先修正频率参数,删除
137M前多余的$符号,确保频率设置正确 - 若修正参数后仍出现WAV头找不到的报错,可以在管道中间加1秒延迟等待
rtl_fm完成初始化,参考命令如下:
rtl_fm -f 137M -s 60k -g 45 -p 55 -E wav -E deemp -F 9 - | { sleep 1; cat; } | sox -t wav - abc.wav rate 11025
- 也可以直接让
rtl_fm输出原始采样流,手动给sox指定输入格式,避免WAV头时序问题:
rtl_fm -f 137M -s 60k -g 45 -p 55 -E deemp -F 9 - | sox -t raw -r 60k -e signed -b 16 -c 1 - abc.wav rate 11025
内容的提问来源于stack exchange,提问作者SEU
相关产品推荐
相关产品推荐

