用Ruby操纵音频文件

时间:2013-11-20 14:36:48

标签: ruby ruby-on-rails-3 html5 ruby-1.9.3

在内部服务器和身份验证上流式传输mp3和ogg文件。 尝试将文件流式传输到HTML5播放器,但遇到了Chrome Seek To功能的问题。

设置了我的所有标题,但是如何打开二进制文件,寻找定位并仅从该点发送数据到最后?

i.e. Given an mp3 file that is 119132474 long,
     And A request comes in asking for the new start point of the file be at 21012274
     How can I send a new binary file with only information from 21012274 to 119132474

这与我想要做的事情类似,但在Node.js http://www.extrawurst.org/blog11/2012/06/streaming-media-in-nodejs/

-------更新02/15/2014 --------

我安装了Redis并使用Redis作为二进制数据的临时缓存服务器。然后使用Redis的GETRANGE。见http://redis.io/commands/getrange

1 个答案:

答案 0 :(得分:1)

您可以以二进制模式打开文件,并使用IO模块中的方法读取字节。例如:

file_size = File.size('filename')
File.open('filename', 'rb') do |file| # read in binary mode
  file.seek(position)
  file.read(file_size - position) # return all bytes until the end
end

还有另一个应该可以工作,但我没有测试流媒体。该方法是'binread',它比第一个简单:

File.binread('filename', start_pos, offset)

它应该有用!