gpt4 book ai didi

ruby-on-rails - 在 chrome 中通过 Ruby on Rails 播放 MP3

转载 作者:行者123 更新时间:2023-12-03 00:00:33 25 4
gpt4 key购买 nike

我正在编写一个 Ruby on Rails 应用程序,它允许用户上传一个 mp3 文件,然后播放它。我让它工作到用户可以做这些事情的地步,但是在寻找歌曲时存在问题。如果用户向前寻找(或让它播放)到歌曲中的某个位置,通常是歌曲的 2/3 或 3/4,然后尝试回到开头(例如 0:20),则播放计时器将转到 0:20,就像它应该的那样,但实际的音频将重新开始,就好像用户寻求到 0:00 一样。

现在我只是试图让这首歌在 chrome 的基本 html5 mp3 播放器中播放,它在传递一个 mp3 文件时使用它。这是我用来提供文件的代码,希望有所有正确的标题:

  file_begin = 0
file_size = @media.file_file_size
file_end = file_size - 1

if !request.headers["Range"]
status_code = "200 OK"
else
status_code = "206 Partial Content"
match = request.headers['range'].match(/bytes=(\d+)-(\d*)/)
if match
file_begin = match[1]
file_end = match[1] if match[2] && !match[2].empty?
end
response.header["Content-Range"] = "bytes " + file_begin.to_s + "-" + file_end.to_s + "/" + file_size.to_s
end
response.header["Content-Length"] = (file_end.to_i - file_begin.to_i + 1).to_s
response.header["Last-Modified"] = @media.file_updated_at.to_s

response.header["Cache-Control"] = "public, must-revalidate, max-age=0"
response.header["Pragma"] = "no-cache"
response.header["Accept-Ranges"]= "bytes"
response.header["Content-Transfer-Encoding"] = "binary"
send_file(DataAccess.getUserMusicDirectory(current_user.public_token) + @media.sub_path,
:filename => @media.file_file_name,
:type => @media.file_content_type,
:disposition => "inline",
:status => status_code,
:stream => 'true',
:buffer_size => 4096)

我将不胜感激对这个问题的任何见解。我觉得我很接近,因为它几乎所有工作,除了在开始附近寻找导致新请求。

谢谢!

最佳答案

需要重新发明轮子吗?我问的原因是你可以简单地允许用户上传 MP3 文件并使用 html5 的功能,因为你的目标是 Chrome。 Paperclip 可以负责上传到公共(public)目录中更可取的位置,您只需将该路径交给 the tag .
从我的评论(下)中删除了疯狂的想法,以防止混淆其他 SO 读者。有关解决方案,请参阅我的最后一条评论,但 Amazon S3 几乎是最好的解决方案。

关于ruby-on-rails - 在 chrome 中通过 Ruby on Rails 播放 MP3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7604240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com