【问题标题】:Play an MP3 file as it's being written播放正在写入的 MP3 文件
【发布时间】:2017-08-08 21:27:30
【问题描述】:

我正在使用 rtl_fm 和 sox 将 fm 电台保存为 mp3 文件。 rtl_fm 捕获信号,sox 将其转码为 mp3。

rtl_fm  -M  wbfm  -f  88.1M -d 0 -s 22050k -l 310 | sox -traw -r8k -es -b16 -c1 -V1 - -tmp3 - | sox -tmp3 - some_file.mp3

然后我尝试在第二个终端中播放该文件,因为正在使用以下方式编写 mp3:

play -t mp3 some_file.mp3

问题在于它只播放到 mp3 在调用播放命令时的时间。

如何让它随着时间的推移播放附加的 mp3,而它正在被写入?

编辑: 在 Raspberry Pi 3 (Raspian Jessie)、NooElec R820T SDR 上运行

【问题讨论】:

    标签: linux mp3 sox software-defined-radio


    【解决方案1】:

    这里有几件事。我不认为sox 支持“拖尾”文件,但我知道mplayer 支持。然而,为了更好地控制管道,使用gstreamer 可能是一种可行的方法,因为它在其效果管道中内置了一个并行事件流。

    如果你想坚持使用sox,我会先去掉多余的第二次调用sox,例如:

    rtl_fm -M wbfm -f 88.1M -d 0 -s 22050k -l 310 |
    sox -ts16 -r8k -c1 -V1 - some_file.mp3
    

    为了在转码时播放流,您可以将其与tee 复用,例如:

    rtl_fm -M wbfm -f 88.1M -d 0 -s 22050k -l 310 |
    tee >(sox -ts16 -r8k -c1 -V1 - some_file.mp3) |
    play -ts16 -r8k -c1 -
    

    或者,如果您希望它们成为单独的进程:

    # Save stream to a file
    rtl_fm -M wbfm -f 88.1M -d 0 -s 22050k -l 310 > some_file.s16
    
    # Encode stream
    sox -ts16 -r8k -c1 -V1 some_file.s16 some_file.mp3
    
    # Start playing the file at 10 seconds in
    tail -c+$((8000 * 10)) -f some_file.s16 |
    play -ts16 -r8k -c1 -
    

    【讨论】:

    • 谢谢!我尝试了这些建议并删除了多余的 sox 命令。
    • 您的第二个建议有效,但它不符合我正在尝试的功能,因为它将播放和录制命令配对。我正在使用 rtl_fm/sox 命令管道将无线电 fm 信号录制到 mp3 文件中。然后,使用单独的命令,我尝试在用户确定的文件起点播放(仍在编写)mp3 文件。可以多次调用此命令,独立于 rtl_fm/sox 记录命令以获得所需的起点。 RECAP:1个记录命令; n 播放命令
    • 我在原始帖子中忽略的其他一些重要信息:在 Raspberry Pi 3 (Raspian Jessie)、NooElec R820T SDR 上运行
    • @spearna:我不确定你是否可以在不将流保存到临时文件的情况下使用 sox 执行此操作
    • 我已经尝试过您对单独进程的建议(请注意,我已经更新了此处的参数以使用我在其他尝试中一直在测试的内容):rtl_fm -Mfm -f92.5M -s170k -Afast -l0 -Edeemp > some_file.s16 | sox -ts16 -r170k -es -b16 -c1 -V1 some_file.s16 some_file.mp3 在第二个终端中,我运行其他命令:tail -c+$((8000 * 10)) -f some_file.s16 | play -ts16 -r8k -c1 - 它运行没有错误,但我听到的只是静态的。我知道 92.5M 站可以工作,所以它必须是某个地方的配置设置不匹配。如果不是 sox,还有什么不同的工具?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多