【问题标题】:How play mp3/audio files in Racket?如何在 Racket 中播放 mp3/音频文件?
【发布时间】:2020-06-15 15:23:46
【问题描述】:

我打算为球拍制作一个 cli 音频播放器,作为学习球拍的练习,以及与该项目相关的所有其他内容。我被困住了如何开始。我找不到任何播放声音文件的包,所以我猜我可能必须制作一个。我该怎么办?

【问题讨论】:

  • 这是个好问题。我在任何地方都找不到“播放 mp3”功能。
  • 是的,似乎有一个用于播放 OGG 文件(这是一个相当低级的库)。我该如何开始?
  • 如果您熟悉数字音频,您可以使用rsound 模块并编写您自己的实现。或者,您可以使用 PortAudio 或 OpenAL 进行 FFI。
  • &贵族考虑回答你自己的问题

标签: audio scheme racket mp3 wav


【解决方案1】:

您可能想要的是#lang video (website)。它为音频播放提供了高级接口。允许您执行以下操作:

#lang video
(clip "file.mp3")

既然你想做一个小小的命令行播放器,你可能还想看看它的小preview tool

【讨论】:

    【解决方案2】:

    我通过球拍调用 shell 脚本结束了这种骇人听闻的方式,一点也不理想。作为参考,把代码放在这里。

    ; This creates the initail rsound
    ; for a song, this rsound is passed around
    ; so the whole song doesn't have to be
    ; decoded from the file everytime.
    (define (play filepath)
      (cond [(string=? "mp3" (last (regexp-split #rx"\\." filepath)))
             (system* "./mp3-hack" filepath)
             (set! filepath "curr.wav")])
      (define input-pstream (make-pstream))
      (define input-rsound (rs-read filepath))
      (pstream-play input-pstream input-rsound)
      (values input-pstream input-rsound filepath))
    

    而 mp3-hack 文件只使用 ffmpeg

    #!/bin/sh
    ffmpeg -i $1 -acodec pcm_s16le -ac 1 -ar 44100 curr.wav 
    

    是的,我知道。不优雅,但至少我得到了它的工作。我的黑客马拉松项目需要它MPEGMafia

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      相关资源
      最近更新 更多