【问题标题】:Rails error: Autoplay is only working sometimes for video_tagRails 错误:自动播放有时仅适用于 video_tag
【发布时间】:2019-08-25 12:31:32
【问题描述】:

我正在使用 Carrierwave 上传视频文件,并将 autoplayloop 都设置为 true 用于我的 video_tag。视频最初上传后会自动播放,但在我刷新页面后只显示视频的第一帧。

video_tag 的来源:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    简单添加

    静音:'静音'

    在视频标签中

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

    见文档:https://developers.google.com/web/updates/2017/09/autoplay-policy-changes

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

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

      • 用户与域进行了交互(点击、点击等)。
      • 在桌面上,已超过用户的媒体参与指数阈值,这意味着
      • 用户之前播放过有声视频。
      • 在移动设备上,用户已[将网站添加到他们的主屏幕]。

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

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-28
        • 2018-12-16
        • 1970-01-01
        • 2011-04-29
        • 2019-01-22
        • 2016-07-17
        • 2017-08-18
        • 2015-02-14
        相关资源
        最近更新 更多