웹용으로 동영상 파일을 올바르게 준비했습니다. 올바른 크기와 해상도를 지정했습니다. 브라우저마다 별도의 WebM 및 MP4 파일을 만들었습니다.
다른 사용자가 동영상을 볼 수 있도록 하려면 웹페이지에 동영상을 추가해야 합니다. 이를 올바르게 하려면 두 가지 HTML 요소인 <video>
요소와 <source>
요소를 추가해야 합니다. 이 도움말에서는 이러한 태그에 관한 기본사항 외에도 우수한 사용자 환경을 만들기 위해 이러한 태그에 추가해야 하는 속성을 설명합니다.
단일 파일 지정
권장되지는 않지만 동영상 요소를 단독으로 사용할 수 있습니다. 항상 아래와 같이 type
속성을 사용하세요. 브라우저는 이를 사용하여 제공된 동영상 파일을 재생할 수 있는지 확인합니다. 감지할 수 없는 경우 괄호로 묶인 텍스트가 표시됩니다.
<video src="chrome.webm" type="video/webm">
<p>Your browser cannot play the provided video file.</p>
</video>
여러 파일 형식 지정
미디어 파일 기본사항에서 모든 브라우저가 동일한 동영상 형식을 지원하는 것은 아니라는 점을 기억하세요. <source>
요소를 사용하면 사용자의 브라우저가 해당 형식 중 하나를 지원하지 않을 경우 대안으로 여러 형식을 지정할 수 있습니다.
아래 예에서는 이 도움말의 뒷부분에서 예시로 사용되는 삽입된 동영상을 생성합니다.
<video controls>
<source src="chrome.webm" type="video/webm">
<source src="chrome.mp4" type="video/mp4">
<p>Your browser cannot play the provided video file.</p>
</video>
type
속성은 선택사항이지만 항상 <source>
태그 이벤트에 추가해야 합니다. 이렇게 하면 브라우저가 재생할 수 있는 파일만 다운로드합니다.
이 접근방식은 다른 HTML 또는 서버측 스크립팅을 제공할 때에 비해 특히 모바일에서 여러 가지 이점이 있습니다.
- 선호도 순으로 형식을 나열할 수 있습니다.
- 클라이언트 측 전환은 지연 시간을 줄여주며, 단 한번의 요청으로 콘텐츠를 가져옵니다.
- 형식 선택을 브라우저에게 맡기는 것은 사용자 에이전트 감지와 함께 서버 측 지원 데이터베이스를 사용하는 것보다 더 간단하고 빠르고 안정적입니다.
- 각 파일 소스의 유형을 지정하면 네트워크 성능이 개선됩니다. 브라우저는 형식을 '스니핑'하기 위해 동영상의 일부를 다운로드하지 않고도 동영상 소스를 선택할 수 있습니다.
이러한 문제는 대역폭과 지연 시간이 중요하고 사용자의 인내심이 제한적인 모바일 환경에서 특히 중요합니다. type
속성을 생략하면 지원되지 않는 유형의 소스가 여러 개 있는 경우 성능에 영향을 줄 수 있습니다.
세부정보를 살펴보는 방법에는 여러 가지가 있습니다. 웹에서 동영상 및 오디오의 작동 방식을 자세히 알아보려면 A Digital Media Primer for Geeks를 참고하세요. DevTools의 원격 디버깅을 사용하여 type 속성이 있는 네트워크 활동과 type 속성이 없는 네트워크 활동을 비교할 수도 있습니다.
시작 및 종료 시간 지정
대역폭을 절약하고 사이트의 반응성을 더 높여보세요. 미디어 프래그먼트를 사용하여 시작 및 종료 시간을 동영상 요소에 추가하세요.
미디어 프래그먼트를 사용하려면 미디어 URL에 #t=[start_time][,end_time]
를 추가합니다. 예를 들어 5~10초의 동영상을 재생하려면 다음을 지정합니다.
<source src="chrome.webm#t=5,10" type="video/webm">
<hours>:<minutes>:<seconds>
에서 시간을 지정할 수도 있습니다. 예를 들어 #t=00:01:05
은 동영상을 1분 5초 지점에서 시작합니다. 동영상의 첫 1분만 재생하려면 #t=,00:01:00
를 지정합니다.
이 기능을 사용하면 여러 파일을 인코딩하여 제공하지 않고도 동일한 동영상에서 여러 개의 뷰를 제공할 수 있습니다(DVD의 신호 지점과 유사).
이 기능이 작동하려면 서버에서 범위 요청을 지원해야 하며 이 기능이 사용 설정되어 있어야 합니다. 대부분의 서버는 기본적으로 범위 요청을 사용 설정합니다. 일부 호스팅 서비스에서는 이 기능을 사용 중지하므로 사이트에서 프래그먼트를 사용할 때 범위 요청을 사용할 수 있는지 확인해야 합니다.
다행히 브라우저 개발자 도구에서 이 작업을 할 수 있습니다. 예를 들어 Chrome에서는 네트워크 패널에 있습니다. Accept-Ranges
헤더를 찾아 bytes
라고 표시되는지 확인합니다. 이미지에서 이 헤더 주위에 빨간색 상자를 그렸습니다. 값으로 bytes
가 표시되지 않으면 호스팅 업체에 문의해야 합니다.
![Chrome DevTools 스크린샷: Accept-Ranges: bytes](https://web.developers.google.cn/static/articles/video-and-source-tags/image/chrome-devtools-screensho-cd70c057af37e.png?authuser=002&hl=ko)
포스터 이미지 포함
포스터 속성을 video
요소에 추가하면, 시청자가 동영상을 다운로드하거나 재생을 시작하지 않고도, 요소가 로드되는 즉시 콘텐츠를 파악할 수 있습니다.
<video poster="poster.jpg" ...>
…
</video>
또한 동영상 src
가 깨지거나 제공된 동영상 형식이 지원되지 않는 경우, 포스터가 대안이 될 수도 있습니다. 포스터 이미지의 유일한 단점은 추가적인 파일 요청이 필요하며, 이로 인해 대역폭이 소모되고 렌더링이 필요하다는 것입니다.
자세한 내용은 이미지를 효율적으로 인코딩을 참고하세요.
![대체 포스터가 없으면 동영상이 손상된 것처럼 보입니다.](https://web.developers.google.cn/static/articles/video-and-source-tags/image/without-fallback-poster-40d22fe6b95af.png?authuser=002&hl=ko)
![대체 포스터는 첫 번째 프레임이 캡처된 것처럼 보이게 합니다.](https://web.developers.google.cn/static/articles/video-and-source-tags/image/a-fallback-poster-makes-97991ed2f2275.png?authuser=002&hl=ko)
동영상이 컨테이너를 오버플로하지 않도록 보장
동영상 요소가 뷰포트에 비해 너무 큰 경우 컨테이너를 오버플로할 수 있습니다. 그러면 사용자가 콘텐츠를 볼 수 없거나 컨트롤을 사용하지 못할 수 있습니다.
![Android Chrome 스크린샷, 세로 모드: 스타일이 지정되지 않은 동영상 요소가 뷰포트를 오버플로합니다.](https://web.developers.google.cn/static/articles/video-and-source-tags/image/android-chrome-screenshot-2f9f737cb9bf1.png?authuser=002&hl=ko)
![Android Chrome 스크린샷, 가로 모드: 스타일이 지정되지 않은 동영상 요소가 뷰포트를 오버플로합니다.](https://web.developers.google.cn/static/articles/video-and-source-tags/image/android-chrome-screenshot-0a3ad7fb3e37.png?authuser=002&hl=ko)
CSS를 사용하여 동영상 크기를 제어할 수 있습니다. CSS가 모든 요구사항을 충족하지 않는 경우 YouTube 및 기타 소스의 동영상에도 FitVids와 같은 JavaScript 라이브러리와 플러그인을 사용할 수 있습니다. 안타깝게도 이러한 리소스는 네트워크 페이로드 크기를 증가시켜 수익과 사용자 지갑에 부정적인 영향을 미칠 수 있습니다.
여기서 설명하는 것과 같은 간단한 용도의 경우 CSS 미디어 쿼리를 사용하여 뷰포트 크기에 따라 요소의 크기를 지정하세요. max-width:
100%
가 기본값입니다.
iframe에 있는 미디어 콘텐츠의 경우 (예: YouTube 동영상), 반응형 접근방식을 시도해 보세요(John Surdakowski의 제안과 유사).
CSS
.video-container {
position: relative;
padding-bottom: 56.25%;
padding-top: 0;
height: 0;
overflow: hidden;
}
.video-container iframe,
.video-container object,
.video-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
HTML
<div class="video-container">
<iframe
src="//www.youtube.com/embed/l-BA9Ee2XuM"
frameborder="0"
width="560"
height="315"
></iframe>
</div>
반응형 샘플을 비반응형 버전과 비교합니다. 보시다시피 응답이 없는 버전은 만족스러운 사용자 환경이 아닙니다.
기기 방향
데스크톱 모니터나 노트북에서는 기기 방향이 문제가 되지 않지만, 휴대기기 및 태블릿용으로 웹페이지 디자인을 고려할 때는 기기 방향이 매우 중요합니다.
iPhone의 Safari에서는 세로 모드 방향과 가로 모드 방향이 훌륭하게 전환됩니다.
![iPhone의 Safari에서 재생되는 동영상의 스크린샷, 세로 모드](https://web.developers.google.cn/static/articles/video-and-source-tags/image/screenshot-video-playing-76f52b9e92365.png?authuser=002&hl=ko)
![iPhone의 Safari에서 재생되는 동영상의 스크린샷, 가로 모드](https://web.developers.google.cn/static/articles/video-and-source-tags/image/screenshot-video-playing-0d5d0af24767b.png?authuser=002&hl=ko)
Android의 iPad 및 Chrome에서는 기기 방향이 문제가 될 수 있습니다. 예를 들어, 사용자설정 기능이 없다면 iPad에서 가로 모드 방향으로 재생되는 동영상은 다음과 같습니다.
![iPad의 Safari에서 재생되는 동영상의 스크린샷, 가로 모드](https://web.developers.google.cn/static/articles/video-and-source-tags/image/screenshot-video-playing-792c6c149e81f.png?authuser=002&hl=ko)
CSS에서 동영상 width: 100%
또는 max-width: 100%
를 설정하면 많은 기기 방향 레이아웃 문제를 해결할 수 있습니다.
자동재생
autoplay
속성은 브라우저가 동영상을 즉시 다운로드하여 재생할지 여부를 제어합니다. 정확한 작동 방식은 플랫폼과 브라우저에 따라 다릅니다.
Chrome: 데스크톱에서 시청하는지, 모바일 사용자가 사이트 또는 앱을 홈 화면에 추가했는지 등 여러 요인에 따라 달라집니다. 자세한 내용은 자동재생 권장사항을 참고하세요.
Firefox: 모든 동영상과 소리를 차단하지만 사용자는 모든 사이트 또는 특정 사이트에 대해 이러한 제한을 완화할 수 있습니다. 자세한 내용은 Firefox에서 미디어 자동재생 허용 또는 차단하기를 참고하세요.
Safari: 이전에는 사용자 동작이 필요했지만 최근 버전에서는 이 요구사항이 완화되었습니다. 자세한 내용은 iOS용 새로운 <동영상> 정책을 참고하세요.
자동 재생 기능이 가능한 플랫폼이라도 이 기능을 사용하는 것이 적절한지 여부를 고려해야 합니다.
- 데이터 사용은 많은 비용이 들 수 있습니다.
- 사용자가 원하기 전에 미디어를 재생하면 대역폭과 CPU 사용량이 증가하여 페이지 렌더링이 지연될 수 있습니다.
- 동영상 또는 오디오 재생이 사용자에게 방해가 되는 경우가 있을 수 있습니다.
프리로드
preload
속성은 사전 로드할 정보나 콘텐츠의 크기를 브라우저에 알려줍니다.
값 | 설명 |
---|---|
none |
사용자가 동영상을 시청하지 않기로 선택했을 수 있으므로 아무것도 사전 로드하지 않습니다. |
metadata |
메타데이터 (기간, 크기, 텍스트 트랙)를 최소한의 동영상과 함께 사전 로드합니다. |
auto |
전체 동영상을 즉시 다운로드하는 것이 바람직한 것으로 여겨집니다. 빈 문자열도 동일한 결과를 생성합니다. |
preload
속성은 플랫폼마다 효과가 다릅니다.
예를 들어 Chrome의 경우 데스크톱에서 25초의 동영상을 버퍼링하지만 iOS 또는 Android에서는 전혀 버퍼링이 없습니다. 즉, 데스크톱에는 발생하지 않는 재생 시작 시 지연이 모바일에는 발생할 수도 있습니다. 자세한 내용은 오디오 및 동영상 미리 로드로 빠른 재생 또는 Steve Souders 블로그를 참고하세요.
이제 웹페이지에 미디어를 추가하는 방법을 알았으므로 청각 장애인이나 오디오 재생이 불가능한 경우 동영상에 캡션을 추가하는 미디어 접근성에 대해 알아보겠습니다.