新手问题 Rails 项目部分视频在 Chrome 下不能播放

raja · 2015年10月30日 · 最后由 yibeio 回复于 2015年11月03日 · 3260 次阅读

最近有个 rails 项目需要播放视频,但是在 chrome 下有些较大的视频 (>5M) 不能播放

在 firefox 下却可以。本以为是浏览器问题,但是直接用 html就能正常播放。使用 php 在 chrome 下也能正常播放. 所有视频编码都是 H.264 ; chrome 下部分视频能播放,路径应该也是正确的

  • 使用的是 video.js
  • 服务器 thin
  • 视频文件放在 /public/upload/video/url/ 下面
  • ruby 2.2, rails 4.2

代码都很简单

ruby 代码:
<%= videojs_rails sources: { mp4: @video.url }, width:"400" do %>
    Please enable <b>JavaScript</b> to see this content.
<%- end %>
html 代码:
<body>
<video src="./1-5.mp4" height="" width="" preload="none" autoplay="autoplay"></video>
</body>
chrome 日志文件:
[1:1:1030/152457:ERROR:render_media_log.cc(20)] MediaEvent: PIPELINE_ERROR demuxer: could not open
[1:1:1030/152646:ERROR:render_media_log.cc(20)] MediaEvent: PIPELINE_ERROR demuxer: could not open
[1:1:1030/152658:ERROR:render_media_log.cc(20)] MediaEvent: PIPELINE_ERROR demuxer: no supported streams
[1:1:1030/152708:ERROR:render_media_log.cc(20)] MediaEvent: PIPELINE_ERROR demuxer: could not parse

搜索错误相关代码时, 但是没有找到...

期间新建过一个干净的 rails 项目,仍然存在同样的问题 最初使用 webrick 时,firefox 下面较大的视频 ( 10M ) 也不能播放,而且是浏览器直接 crash, 换成 thin 后就正常 所以有些怀疑是不是服务器对文件大小有限制的原因,但是在 firefox 下却完全正常,实在找不出原因,求解答

谢谢!

哎,你一个视频播放功能关 Rails 啥事 (虽然我也不知道问题在那里) 首先你得搞清楚这功能是谁提供的

webrick 不正常,thin 正常,那就是 app server 的问题了。你可以在开发环境替换 thin 或者其他 app server,但是生产环境中是用 Nginx 或者云储存来处理文件的,不经过 app server。

#1 楼 @huacnlee

唉,确实没什么关系,但是也没找到其它方面的原因,想试试有没有人碰到同样的问题 😭
刚才又测试了一下,发现视频文件放在app/assets/videos下面能正常播放,在 public/uploads/video下面就不行,所以有些怀疑是不是 rails 配置方面的问题

#2 楼 @rei 好的,我换成 nginx + passenger 试试

PIPELINE_ERROR demuxer 这种错误看起来是视频文件没有加载完整,或者数据没有及时发送到浏览器。如果解码器找不到 mp4 的文件标识/分段标识就会报这个错误。

估计是 webrick 对这种流文件的处理能力有问题?

#5 楼 @southwolf 谢谢,应该就是 webrick 的问题,换成其他的就行了

同意#5 楼 @southwolf , mp4 文件需要切成流才能在浏览器端正常播放。直接用一个完整的文件,需要 appserver 提供这样的功能才行。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号