Video

공헌자 숫자: 3명

Introduced in HTML5

 

요약

HTML <video> 요소는 동영상 콘텐츠를 포함하기 위해서 사용됩니다. It may contain several video sources, represented using the src속성이나 <source> 요소로 여러개의 동영상 소스를 표시할 수 있고 브라우저가 가장 적장한 것을 선택합니다.

지원되는 형식을 확인하려면 오디오와 비디오 요소에서 지원하는 미디어 형식 문서를 참고하세요.

  • 콘텐츠 카테고리 플로우 콘텐츠, 프레이징 콘테츠, 포함된 콘텐츠입니다. controls 속성이 있다면 인터랙티브 콘텐츠 이면서 제어 가능한 콘텐츠 입니다.
  • 허용된 콘텐츠src 속성이 있으면 <audio><video> 요소가 아닌 미디어 요소를 포함하지 않는 투명한 콘텐츠뒤에 오는 0개 이상의 <track> 요소
    또는 <audio><video> 요소가 아닌 미디어 요소를 포함하지 않는 투명한 콘텐츠뒤에 오는 <source> 요소입니다.
  • 태그 생략 None, both the starting and ending tag are mandatory.
  • 허용된 부모요소 포함 콘텐츠를 허용하는 모든 요소가 가능합니다.
  • DOM 인터페이스 HTMLVideoElement

속성

다른 HTML 요소와 같이 이 요소는 전역 속성을 지원합니다.

autoplay
부울(boolean) 속성. 이 값이 설정되면, 데이터 로딩이 완료되지 않더라도 재생 가능한 시점에 자동으로 재생이 시작됩니다.
autobuffer
부울(boolean) 속성. 이 값이 설정되면, 자동 재생으로 설정되어 있지 않더라도, 버퍼링을 자동으로 시작합니다. 동영상이 재생될 것이라고 여겨질 경우에 사용되어야 합니다(예를 들어서 동영상이 다른 콘텐츠와 함께 있는 경우가 아닌, 사용자가 동영상을 재생하기 위해서 페이지에 들어온 경우). 동영상은 미디어 캐쉬가 가득차기 전까지 버퍼에 저장됩니다.
구현 정보: autobuffer 속성은 초기 HTML5 스펙에는 있었지만 이후에 삭제되었습니다. Gecko 2.0과 다른 브라우저에서는 삭제되었으며 전혀 개발이 되지 않은 브라우저도 있습니다. 스펙에서는 The spec defines a new enumerated attribute, preload, to replace the autobuffer 속성을 대체 하기 위해서 다른 문법을 사용한 새로운 preload 속성을 정의하고 있습니다. bug 548523
buffered
미디어의 어느 시간대가 버퍼에 들어 있는지 확인할 수 있는 속성입니다. 이 속성은 TimeRanges 객체를 포함합니다.
controls
이 속성이 존재하면, 소리 조절(volume), 동영상 탐색(seek), 일시 정지(pause)/재시작(resume)을 할 수 있는 컨트롤러를 제공합니다.
crossorigin
This enumerated attribute indicates if the fetching of the related image must be done using CORS or not. CORS-enabled resources can be reused in the <canvas> element without being tainted. The allowed values are:
anonymous
A cross-origin request (i.e. with Origin: HTTP header) is performed. But no credential is sent (i.e. no cookie, no X.509 certificate and no HTTP Basic authentication is sent). If the server does not give credentials to the origin site (by not setting the Access-Control-Allow-Origin: HTTP header), the image will be tainted and its usage restricted..
use-credentials
A cross-origin request (i.e. with Origin: HTTP header) is performed with credential is sent (i.e. a cookie, a certificate and HTTP Basic authentication is performed). If the server does not give credentials to the origin site (through Access-Control-Allow-Credentials: HTTP header), the image will be tainted and its usage restricted.
When not present, the resource is fetched without a CORS request (i.e. without sending the Origin: HTTP header), preventing its non-tainted used in <canvas> elements. If invalid, it is handled as if the enumerated keyword anonymous was used. See CORS settings attributes for additional information.
height
비디오의 출력 영역 높이이며, CSS 픽셀 단위 입니다.
loop
부울(boolean) 속성, 이 값이 설정되면, 동영상 재생이 마친 후(동영상의 마지막에 도달하면) 자동으로 처음으로 돌아갑니다.
muted
비디오에 포함되어 있는 오디오의 기본 설정을 나타내는 부울 속성입니다. 설정하면 오디오가 나오지 않습니다. 기본 값은 false이며 이는 비디오가 재생되면 오디오도 같이 재생됨을 의미합니다.
played
재생된 동영상 영역을 나타내는 TimeRanges 객체 입니다.
preload
이 속성은 저작자가 생각하는 가장 좋은 사용자 경험이 어떠한 것인지 브라우저에 미리 정보를 알려주는 용도록 사용됩니다. 다음 값들 중 하나를 가질 수 있습니다:
  • none: 저작자가 생각하기에 사용자가 비디오를 보지 않거나 서버가 최소한의 트래픽을 유지하고자 함을 의미하빈다. 다시 말해서 비디오가 캐시되지 않아야 함을 의미합니다.
  • metadata: 저작자가 생각하기에 사용자가 비디오를 보지 않을 수도 있지만 메타데이터(예를 들어서 길이)를 미리 가져오는 것은 합리적임을 의미합니다.
  • auto: 사용자가 우선순위를 가지고 있음을 의미합니다. 다시 말해서 사용자가 이를 사용하지 않을 지라도 필요하다면 전체 비디오가 다운로드 될 수 있음을 의미합니다.
  • 빈 문자열: auto 와 동일합니다.

스펙에서는 기본값으로 metadata를 권장하지만 설정하지 않았다면 각 브라우저가 정한 기본값을 설정하게 됩니다.

사용 정보:
  • 비디오를 자동으로 재생하려 한다면 브라우저가 이를 다운로드 해야 하기 때문에 autoplay이 이 속성보다 우선시 됩니다. autoplay 속성과 preload 속성을 둘 다 설정하는 것은 스펙상 가능합니다.
  • 브라우저가 이 속성을 반드시 스팩대로 따라야 하는 것은 아닙니다. 단지 힌트일 뿐입니다.
poster
사용자가 동영상을 재생하거나 탐색하기 전까지 출력되는 포스터 프레임 주소입니다. 이 속성이 명시되지 않으면, 첫 번째 프레임이 사용 가능하게 될때까지 아무것도 출력되지 않다가, 가능하게 되면 첫 번째 프레임을 포스터 프레임으로 출력합니다.
src
삽입(embed)할 동영상의 주소(url)입니다. 이 속성은 선택 사항으로, 비디오 블록 내의 <source> 요소를 사용하여 삽입할 동영상을 명시할 수도 있습니다.
width
비디오의 출력 영역 너비이며, CSS 픽셀 단위입니다.

이벤트

<video> 요소는 많은 이벤트를 발생시킬 수 있습니다.

예제

<!-- Simple video example -->
<video src="videofile.ogg" autoplay poster="posterimage.jpg">
  Sorry, your browser doesn't support embedded videos, 
  but don't worry, you can <a href="videofile.ogg">download it</a>
  and watch it with your favorite video player!
</video>

<!-- Video with subtitles -->
<video src="foo.ogg">
  <track kind="subtitles" src="foo.en.vtt" srclang="en" label="English">
  <track kind="subtitles" src="foo.sv.vtt" srclang="sv" label="Svenska">
</video>

첫번째 예제는 동영상을 더 다운받기 위해서 멈추지 않아도 될 정도로 영상이 다운로드 되면 바로 영상이 재생됩니다. 동영상이 재생되기 전까지 "posterimage.jpg" 이미지가 표현됩니다.

두번째 예제에서는 사용자가 서로다른 자막을 선택할 수 있습니다.

서버 지원

동영상 MIME 타입이 올바르게 설정되어 있지 않다면 동영상이 보이지 않거나 X표시가 된 회색 박스가 나오게 됩니다(JavaScript가 활성화 된 경우).

Ogg Theora 동영상을 사용할 경우 아파치 웹 서버에 동영상에서 사용하는 확장자(보통 ".ogm", ".ogv", ".ogg"를 사용합니다)를 "/etc/apache"에 있는 "mime.types" 파일에 "video/ogg" MIME 타입을 추가하거나 httpd.conf에 "AddType" 디렉티브를 이용해서 추가하면 해결됩니다.

AddType video/ogg .ogm
AddType video/ogg .ogv
AddType video/ogg .ogg

WebM 동영상을 사용할 경우 아파치 웹 서버에 동영상에서 사용하는 확장자(보통 ".webm"을 사용합니다)를 "/etc/apache"에 있는 "mime.types" 파일에 "video/webm" MIME 타입을 추가하거나 httpd.conf에 "AddType" 디렉티브를 이용해서 추가하면 해결됩니다.

AddType video/webm .webm

여러분의 웹 호스트에서 새로운 기술이 범용적으로 적용되어 업데이트 되기 전까지 편하게 MIME 타입을 설정하는 인터페이스를 제공할지도 모릅니다.

DOM 인터페이스

이 요소는 HTMLVideoElement 인터페이스를 구현하고 있습니다.

브라우저 호환성

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
기본 지원 3.0 3.5 (1.9.1) 9.0 10.5 3.1
autoplay 속성 3.0 3.5 (1.9.1) 9.0 10.5 3.1
buffered 속성 ? 4.0 (2.0) ? Yes ?
controls 속성 3.0 3.5 (1.9.1) 9.0 10.5 3.1
crossorigin 속성 ? 12.0 (12.0) ? ? ?
loop 속성 3.0 11.0 (11.0) 9.0 10.5 3.1
muted 속성 ? 11.0 (11.0) ? Yes ?
played 속성 ? 15.0 (15.0) ? Yes ?
poster 속성 3.0 3.6 (1.9.2) 9.0 10.5 3.1
preload 속성 3.0 4.0 (2.0) 9.0 Yes 3.1
src 속성 3.0 3.5 (1.9.1) 9.0 10.5 3.1
Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
기본 지원 ? 1.0 (1.0) ? ? ?
autoplay 속성 ? 1.0 (1.0) ? ? iOS 6.0 only
buffered 속성 ? 4.0 (2.0) ? ? ?
controls 속성 ? 1.0 (1.0) ? ? ?
loop 속성 ? 11.0 (11.0) ? ? ?
muted 속성 ? 11.0 (11.0) ? ? ?
played 속성 ? 15.0 (15.0) ? ? ?
poster 속성 ? 1.0 (1.0) ? ? ?
preload 속성 ? 4.0 (2.0) ? ? ?
src 속성 ? 1.0 (1.0) ? ? ?
crossorigin 속성 ? 12.0 (12.0) ? ? ?

참고

문서 태그 및 공헌자

Contributors to this page: hyeonseok, teoli, Suguni
최종 변경: hyeonseok,