iPhone에서 HTML5 비디오 자동 재생


88

이상한 문제가 있습니다. 반복되는 배경 비디오로 웹 사이트를 만들려고합니다. 코드는 다음과 같습니다.

<video src="video/bg.mp4" style="z-index: -1;object-fit: cover;" poster="video/bg.jpg" autobuffer autoplay loop muted></video>

이것은 대부분의 브라우저에서 완벽하게 작동하지만 (IE는이 객체에 맞는 것에 어려움을 겪지 만 괜찮습니다) iPhone에서는 비디오가 자동 재생되지 않지만 iPad에서는 작동합니다. 이미 iOS 용 새 정책을 읽었으며 요구 사항을 충족한다고 생각합니다 (그렇지 않으면 iPad가 자동 재생되지 않음). 다른 테스트를 수행했습니다.

  • 오버레이 div를 제거해도 문제가 해결되지 않습니다.
  • Z- 색인을 제거해도 문제가 해결되지 않습니다.
  • Wi-Fi 또는 Cellular는 차이를 만들지 않습니다.
  • 비디오 파일 크기도 차이를 만들지 않습니다.

내가 잘못하고 있거나 iPhone이 단순히 비디오를 자동 재생하지 않고 항상 상호 작용이 필요합니까? 저는 iOS 10 만 신경 쓰고 있습니다. iOS 9에서는 요구 사항이 다르다는 것을 알고 있습니다.


여기에서 몇 가지 도움말을 찾을 수 있습니다. stackoverflow.com/questions/41360490/… 개인적으로 모든 팁과 Apples 정책을 따른 후에도 아이폰에서 자동 재생되는 비디오를 아직 얻지 못했습니다.
Mark

알아내는 데 몇 시간이 걸렸습니다. 다른 사람들의 시간을 절약하기 위해 저는 블로그에 제 결과를 요약했습니다. 도움이 되었기를 바랍니다. medium.com/@BoltAssaults/…
BoltCoder

답변:


214

않습니다 playsinline 속성 도움을?

내가 가진 것은 다음과 같습니다.

<video autoplay loop muted playsinline class="video-background ">
  <source src="videos/intro-video3.mp4" type="video/mp4">
</video>

https://webkit.org/blog/6784/new-video-policies-for-ios/ 에서 댓글을 참조 playsinline하십시오.


1
할렐루야! 이것에 대해 고맙습니다, 아무 소용이없는 다른 12 가지 해결책을 시도했습니다.
tolmark

23
playsinline와 함께 나를 위해 일한 muted아이폰에 마음에 저전력 모드 특질을 유지

1
이것이 답입니다.
JCraine

1
playsinline오늘을 구했습니다 !!!! 고마워요. BTW, 새로운 브라우저 정책은 비디오를 자동 시작하려는 경우 음소거 상태로 시작하거나 수행 할 수 없도록 요구합니다. @ken에게 +1 크롬의 예 : [ developers.google.com/web/updates/2017/09/…
Nuno Prata

18
React를 사용하는 경우 속성 playsinline은 camelCase :로 작성되어야합니다 playsInline. 그렇지 않으면 작동하지 않습니다.
Quentin D

62

iOS 10 이상에서는 인라인 동영상 자동 재생이 가능합니다. 하지만 iPhone에서 "저전력 모드"를 꺼야합니다.


2
좋은 팁하지만 내가 제출 한 이것에 대한 질문이 있습니다 : stackoverflow.com/questions/50400902/…
Mathieu

7
지난 1 시간 동안 내 동영상이 자동으로 재생되지 않는 이유를 이해하려고 노력했습니다. 감사합니다!
리 오르

2
감사합니다!
Nikita Rogatnev

4
사용자의 장치를 제어 할 수없고 저전력 모드를 사용할 수 없다는 점을 언급 할 가치가 있습니다. 우리가 할 수있는 유일한 방법은 "저전력 모드를 끄고"에 사용자가 더 좋은 경험을 가지고 프롬프트입니다
무하마드 오사마

1
나에게도 일어 났고 내가 당신의 게시물을 찾을 때까지 나를 미치게 만들었습니다. 나는 이미 Safari 11과 11.1의 사양을보고 있었는데 자동 재생을 완전히 비활성화했을 수도 있지만 저전력 모드 일뿐입니다 ... 개발자의 삶은 어려울 수 있습니다. :-)
haeki

7

다음은 웹 사이트에서 동영상 자동 재생에 대한 모든 어려움을 극복 할 수있는 작은 방법입니다.

  1. 비디오가 재생 중인지 확인하십시오.
  2. 신체 클릭 또는 터치와 같은 이벤트에서 비디오 재생을 트리거합니다.

참고 : 일부 브라우저는 사용자가 기기와 상호 작용하지 않는 한 동영상이 자동 재생되도록 허용하지 않습니다.

따라서 비디오 재생 여부를 확인하는 스크립트는 다음과 같습니다.

Object.defineProperty(HTMLMediaElement.prototype, 'playing', {
get: function () {
    return !!(this.currentTime > 0 && !this.paused && !this.ended && this.readyState > 2);
}});

그런 다음 본문에 이벤트 리스너를 연결하여 비디오를 자동으로 재생할 수 있습니다.

$('body').on('click touchstart', function () {
        const videoElement = document.getElementById('home_video');
        if (videoElement.playing) {
            // video is already playing so do nothing
        }
        else {
            // video is not playing
            // so play video now
            videoElement.play();
        }
});

참고 : autoplay속성은이 스크립트가 아닌 다른 동영상 태그에 추가해야하는 매우 기본적인 것입니다.

이 링크에서 코드가있는 작업 예제를 볼 수 있습니다.

장치가 저전력 모드 / 데이터 절약 모드 / Safari 브라우저 문제 일 때 비디오를 자동 재생하는 방법

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.