如何在Ruby中以流形式播放音频
我正试图找到一种使用Ruby将WAV文件作为流播放的好方法。我找到了这个宝石,但似乎无法正确播放音频。当我运行这段代码时,它只会发出一种非常不平稳、口吃的声音如何在Ruby中以流形式播放音频,ruby,audio,signal-processing,core-audio,Ruby,Audio,Signal Processing,Core Audio,我正试图找到一种使用Ruby将WAV文件作为流播放的好方法。我找到了这个宝石,但似乎无法正确播放音频。当我运行这段代码时,它只会发出一种非常不平稳、口吃的声音 require 'coreaudio' require 'thread' BUFF_SIZE = 1024 Thread.abort_on_exception = true song = CoreAudio::AudioFile.new("bleh.wav", :read) outbuf = CoreAudio.default_ou
require 'coreaudio'
require 'thread'
BUFF_SIZE = 1024
Thread.abort_on_exception = true
song = CoreAudio::AudioFile.new("bleh.wav", :read)
outbuf = CoreAudio.default_output_device.output_buffer(BUFF_SIZE)
queue = Queue.new
read_song = Thread.start do
loop do
segment = song.read(BUFF_SIZE)
queue.push(segment)
end
end
play_song = Thread.start do
while segment = queue.pop do
outbuf << segment
end
end
outbuf.start
sleep 10
read_song.kill.join
play_song.kill.join
需要“coreaudio”
需要“线程”
BUFF_SIZE=1024
Thread.abort_on_异常=true
song=CoreAudio::AudioFile.new(“bleh.wav”,:read)
exputf=CoreAudio.default\u output\u device.output\u buffer(BUFF\u大小)
queue=queue.new
read_song=Thread.start do
环道
段=歌曲读取(BUFF_大小)
队列推送(段)
结束
结束
play_song=Thread.start do
而段=queue.pop do
exputf看起来问题在于使用两个单独的线程进行输入和输出。我能够用一个线程使它工作:
play_song = Thread.start do
while segment = song.read(BUFF_SIZE)
outbuf << segment
end
end
play_song=Thread.start do
而段=歌曲读取(BUFF_大小)
来看看这个toturial流媒体音乐真的怎么样