Я использую Carrierwave для загрузки видеофайлов, и для autoplay и loop установлено значение true для моего video_tag.Видео воспроизводится автоматически после первоначальной загрузки, но отображается только первый кадр видео после обновления страницы.
autoplay
loop
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.Спасибо!
Просто добавьте
приглушен: «приглушен»
в теге видео
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 просты:
Автозапуск со звуком разрешен, если:
На мобильном телефоне пользователь [добавил сайт на главный экран].
Верхние кадры могут делегировать разрешение автозапуска для своих фреймов, чтобы разрешить автоигру со звуком.
Добавление muted: "muted" к моему video_tag позволило мне проверить, воспроизводится ли видео, а затем вызвать play(), если необходимо. Это решило мою проблему:
muted: "muted"
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