Rails错误:自动播放有时仅对video_tag有效

时间:2019-04-03 21:07:44

标签: html ruby-on-rails ruby ruby-on-rails-4 html5-video

我正在使用Carrierwave上传视频文件,并且autoplay的{​​{1}}和loop都设置为true。最初上传视频后,该视频会自动播放,但刷新页面后只会显示视频的第一帧。

video_tag的来源:

video_tag

https://github.com/ethanwilkins/simplr/blob/2c07884d153192566ded30bd020c06237747f401/app/views/posts/_card.html.erb#L87

我也在使用Nginx和Unicorn。谢谢!

2 个答案:

答案 0 :(得分:1)

只需添加

  

已静音:“已静音”

在video_tag中

video_tag post.video_url.to_s, autoplay: true, loop: true, muted: 'muted', class: :standard_post_video

查看文档:{​​{3}}

Chrome的自动播放政策很简单:

  • 始终允许静音的自动播放。
  • 在以下情况下允许自动播放声音

    • 用户已与域互动(单击,点击等)。
    • 在台式机上,已超过用户的“媒体参与度索引”阈值,这表示
    • 用户以前曾播放带声音的视频。
    • 在移动设备上,用户已将该网站添加到主屏幕。

    • 顶级框架可以将自动播放权限委派给其iframe,以允许自动播放声音。

答案 1 :(得分:0)

在我的muted: "muted"中添加video_tag可以检查视频是否正在播放,然后在必要时致电play()。这解决了我的问题:

    <%= video_tag post.video_url.to_s, autoplay: true, loop: true, muted: "muted", class: :standard_post_video, id: "standard_post_video_#{post.id}" %>
    <script>
      var video = $('#video').get(0);
      if (video.paused) {
        video.play();
      }
    </script>

提交:https://github.com/ethanwilkins/simplr/commit/4eea13ee610b4744f555cfba3696da6ac492b622