【问题标题】:Stream Audio from AWS to Rails App Using Fog/Carrierwave使用 Fog/Carrierwave 将音频从 AWS 流式传输到 Rails 应用程序
【发布时间】:2014-10-14 02:27:07
【问题描述】:

我有一个 Rails 应用程序,它允许用户将 mp3 上传到他们的 Profile 模型,然后将其存储在 AWS S3 中。我试图弄清楚如何通过 Fog 建立连接并在单击时流式传输他们的歌曲,类似于 SoundcloudBandcamp 的功能。我一直在查看 Fog 文档和类似的帖子,但被卡住了。我想我必须使用send_file,但不确定。任何信息,将不胜感激。我打算使用 jplayer 或类似的东西来实际播放音频,只需要在点击时进行连接。

更新:

我目前正在尝试在我的配置文件控制器中实现这种效果,遵循这个文档http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/Bucket.html

 bucket = s3.buckets.create('name', :grants => {
  :grant_read => [
    { :uri => "http://acs.amazonaws.com/groups/global/AllUsers" },
  ],
  :grant_full_control => [
    { :id => 'abc...mno' }               # cannonical user id
    { :email_address => 'foo@bar.com' }, # email address
  ]
})

在我看来,我有以下内容,只是为了让我有一些东西可以查看和使用。

 <audio id="song" class="audio_player" controls="false" preload="true">
   <source src="/audios/ignite.mp3" type="audio/mpeg">
 </audio>

所以这里有一种脱节,感觉就像我在黑暗中拍摄。我认为一点点清晰会让我走上正确的轨道。我也没有成功让 Fog 在我的控制台中工作,这会有所帮助,但它是一个单独的线程。感谢您的帮助。

【问题讨论】:

  • 你能告诉我们一些你尝试过的东西吗?
  • @Richlewis,感谢收看。我已经对原始帖子添加了更新。我正在研究进行某种“经过身份验证的获取/读取”。这听起来对吗?这个想法是让用户随意滚动并收听不同的 mp3。

标签: ruby-on-rails amazon-web-services carrierwave fog


【解决方案1】:

我怀疑您实际上并不想通过您的服务器流式传输音频。将源属性直接指向 s3 可能会更好。你有几个选择。首先,由于您似乎已将其设置为公共可读性,您可以直接链接到该网址(我相信carrierwave 有方法可以为您提供此网址)。您也可以通过使用已签名/过期的 url 在不公开阅读的情况下执行此操作,但这会变得有点复杂。

话虽如此,如果它似乎来自您的服务器(而不是 S3)真的很重要,您可能需要考虑为 S3 设置一个 CNAME,以便它仍然从那里提供服务,但似乎来自您的主机(或类似)的子域。希望这有助于为您指明正确的方向,但请让我知道,否则我可以尝试添加进一步的特异性。谢谢!

【讨论】:

  • 谢谢@geemus,直接链接到网址对我有用。我试图让它更复杂:) 再次感谢。
  • 很高兴为您提供帮助。直接链接是诱人/显而易见的方法,但最终您通常不想在此期间占用您自己服务器的一部分。值得庆幸的是,这正是存储服务擅长的用例。很好,这让您重回正轨!
  • 感谢@geemus,只是为了澄清我自己的理解。就像调用 user.profile.audio 一样简单,以获取音频文件链接,效果很好。这种方法有意义吗?看来我以前真的想把事情复杂化。
  • 这在一定程度上取决于您的实施细节,但是,是的,我认为您所追求的可能就是这种效果。
猜你喜欢
  • 2015-06-29
  • 2013-10-09
  • 2018-06-13
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 2012-07-08
相关资源
最近更新 更多