我正在尝试在rails3项目中实现html5视频,我陷入了奇怪的境地。 要在用户页面上显示HTML5视频,我添加了以下代码:
<!-- Video element -->
<video width="420" height="240" controls preload="metadata" poster="/images/video.jpg">
<!-- Video sources -->
<source src="/movies/video.ogv" type='video/ogg; codecs="theora, vorbis"'>
</video>
首先奇怪的是,浏览器已经将“GET / users / 1”这样的请求添加到原始请求“GET / users / null”,但它应该是“GET / users / 1”,因为当前用户已经ID = 1。然后在电影控制器(show action)中我添加了这段代码:
filename = Rails.root.join('public/videos/' + params[:id] + '.' + params[:format])
send_file filename, :type => 'video/ogg'
其中params [:id]是视频文件的名称。 一切似乎都没问题,但我有错误:
ERROR Errno::ENOBUFS: An operation on a socket could not be performed
because the system lacked sufficient buffer space or because a queue was full
你能帮我理解和解决这个问题吗?感谢
答案 0 :(得分:1)
可以理解你的第一个问题。对于#2,试试这个:
send_file filename, :type => 'video/ogg', :disposition => 'inline'
答案 1 :(得分:0)
据我所知,Webrick不支持视频流。尝试切换到乘客