λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

video νƒœκ·Έ μ‚¬μš©λ²• & 예제 총정리

by 5566 2023. 10. 31.

1. video νƒœκ·Έλž€?

video νƒœκ·ΈλŠ” HTML5μ—μ„œ λ„μž…λœ νƒœκ·Έλ‘œ, λΉ„λ””μ˜€ μ½˜ν…μΈ λ₯Ό μ›Ή νŽ˜μ΄μ§€μ— ν‘œμ‹œν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 이 νƒœκ·ΈλŠ” λΉ„λ””μ˜€ νŒŒμΌμ„ μž¬μƒν•˜κ³ , 일뢀 λΈŒλΌμš°μ €μ—μ„œλŠ” μ›ΉμΊ μ΄λ‚˜ 슀트리밍 λΉ„λ””μ˜€λ₯Ό μ§€μ›ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€. video νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜λ©΄ μ‚¬μš©μžκ°€ λΉ„λ””μ˜€λ₯Ό κ°μƒν•˜κ³  μ»¨νŠΈλ‘€ν•  수 μžˆλŠ” ν”Œλ ˆμ΄μ–΄λ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

video νƒœκ·Έλ₯Ό μ‚¬μš©ν•΄μ„œ λΉ„λ””μ˜€λ₯Ό μ›Ή νŽ˜μ΄μ§€μ— μΆ”κ°€ν•˜λ©΄ λ‹€μ–‘ν•œ ν˜•μ‹μ˜ λΉ„λ””μ˜€ νŒŒμΌμ„ 지원할 수 μžˆμŠ΅λ‹ˆλ‹€. 일반적으둜 MP4, WebM, Ogg λ“±μ˜ ν˜•μ‹μ„ μ§€μ›ν•©λ‹ˆλ‹€. λ˜ν•œ νƒœκ·Έ λ‚΄μ˜ 속성을 μ§€μ •ν•˜λ©΄ λ™μ μœΌλ‘œ λΉ„λ””μ˜€λ₯Ό μ œμ–΄ν•˜κ³  μ‚¬μš©μžμ—κ²Œ νŠΉμ • κΈ°λŠ₯을 μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λΉ„λ””μ˜€ νƒœκ·Έλ₯Ό μ‚¬μš©ν•¨μœΌλ‘œμ¨ μ›Ή νŽ˜μ΄μ§€μ— λΉ„λ””μ˜€λ₯Ό μ‰½κ²Œ μ‚½μž…ν•  수 있으며, μ‚¬μš©μž κ²½ν—˜μ„ ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

2. video νƒœκ·Έ κΈ°λ³Έ μ‚¬μš©λ²•

video νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€λ₯Ό μ›Ή νŽ˜μ΄μ§€μ— μΆ”κ°€ν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

<video src="video.mp4" controls></video>

μœ„μ˜ μ˜ˆμ‹œ μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  • <video> νƒœκ·ΈλŠ” λΉ„λ””μ˜€ μ½˜ν…μΈ λ₯Ό μΆ”κ°€ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λ©°, 내뢀에 λΉ„λ””μ˜€ νŒŒμΌμ„ μ§€μ •ν•˜λŠ” 속성과 ν•¨κ»˜ μ‚¬μš©λ©λ‹ˆλ‹€.
  • src 속성을 μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€ 파일의 경둜λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μœ„ μ½”λ“œμ—μ„œλŠ” video.mp4λΌλŠ” νŒŒμΌμ„ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이 κ²½λ‘œλŠ” μ‹€μ œλ‘œ λΉ„λ””μ˜€ 파일이 μžˆλŠ” 경둜둜 λ°”κΎΈμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • controls 속성은 λΉ„λ””μ˜€ ν”Œλ ˆμ΄μ–΄μ— 컨트둀러λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ μ‚¬μš©μžκ°€ λΉ„λ””μ˜€λ₯Ό μž¬μƒ, μΌμ‹œμ •μ§€, λ‹€μ‹œμƒμ„±, μŠ€ν‚΅ 등을 ν•  수 있게 λ©λ‹ˆλ‹€.

μœ„μ˜ μ½”λ“œλ₯Ό μ›Ή νŽ˜μ΄μ§€μ— μΆ”κ°€ν•˜λ©΄, μ§€μ •λœ λΉ„λ””μ˜€ 파일이 μž¬μƒλ˜λŠ” λΉ„λ””μ˜€ ν”Œλ ˆμ΄μ–΄κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€. μ‚¬μš©μžλŠ” 컨트둀러λ₯Ό μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€λ₯Ό μ‘°μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

3. video νƒœκ·Έμ˜ 속성

video νƒœκ·Έμ—λŠ” λ‹€μ–‘ν•œ 속성을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 속성을 μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€ ν”Œλ ˆμ΄μ–΄λ₯Ό μ œμ–΄ν•˜κ³  λ‹€μ–‘ν•œ κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λͺ‡ 가지 μ€‘μš”ν•œ 속성은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  • autoplay: 이 속성을 μ‚¬μš©ν•˜λ©΄ λΉ„λ””μ˜€κ°€ μžλ™μœΌλ‘œ μž¬μƒλ©λ‹ˆλ‹€. νŽ˜μ΄μ§€κ°€ λ‘œλ“œλ˜λŠ” μˆœκ°„λΆ€ν„° λΉ„λ””μ˜€κ°€ μžλ™μœΌλ‘œ μ‹œμž‘λ©λ‹ˆλ‹€.
  • controls: 이 속성을 μ‚¬μš©ν•˜λ©΄ λΉ„λ””μ˜€ ν”Œλ ˆμ΄μ–΄μ— κΈ°λ³Έ 컨트둀러λ₯Ό ν‘œμ‹œν•©λ‹ˆλ‹€. μ‚¬μš©μžλŠ” μž¬μƒ, μΌμ‹œμ •μ§€, λ‹€μ‹œμƒμ„±, μ‹œκ°„ μŠ€ν‚΅ 등을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • loop: 이 속성을 μ‚¬μš©ν•˜λ©΄ λΉ„λ””μ˜€κ°€ 반볡 μž¬μƒλ©λ‹ˆλ‹€. λΉ„λ””μ˜€κ°€ μ’…λ£Œλ˜λ©΄ λ‹€μ‹œ 처음으둜 λŒμ•„κ°€ μž¬μƒλ©λ‹ˆλ‹€.
  • muted: 이 속성을 μ‚¬μš©ν•˜λ©΄ λΉ„λ””μ˜€κ°€ μŒμ†Œκ±°λ©λ‹ˆλ‹€. 기본적으둜 λΉ„λ””μ˜€μ˜ μ˜€λ””μ˜€κ°€ μž¬μƒλ©λ‹ˆλ‹€.
  • poster: 이 속성을 μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€κ°€ λ‘œλ“œλ˜κΈ° 전에 ν‘œμ‹œλ˜λŠ” 이미지λ₯Ό 지정할 수 μžˆμŠ΅λ‹ˆλ‹€. λΉ„λ””μ˜€ μΈλ„€μΌμ΄λ‚˜ ν”Œλ ˆμ΄μ–΄ 둜고 등을 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • preload: 이 속성을 μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€ 파일이 미리 λ‘œλ“œλ˜λŠ” 방식을 지정할 수 μžˆμŠ΅λ‹ˆλ‹€. auto, metadata, none λ“±μ˜ 값을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • width와 height: 이 속성듀을 μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€μ˜ κ°€λ‘œμ™€ μ„Έλ‘œ 크기λ₯Ό 지정할 수 μžˆμŠ΅λ‹ˆλ‹€. 일반적으둜 ν”½μ…€ λ‹¨μœ„λ‘œ 값을 μž…λ ₯ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 속성듀을 μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€ νƒœκ·Έλ₯Ό μ»€μŠ€ν„°λ§ˆμ΄μ§•ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λΉ„λ””μ˜€ 파일의 κ²½λ‘œμ™€ ν•¨κ»˜ μ΄λŸ¬ν•œ 속성듀을 μ‚¬μš©ν•˜μ—¬ μ›Ή νŽ˜μ΄μ§€μ— 동적인 λΉ„λ””μ˜€ μ½˜ν…μΈ λ₯Ό μΆ”κ°€ν•˜μ„Έμš”.

4. video νƒœκ·Έ 예제: μžλ™ μž¬μƒ, 컨트둀 μΆ”κ°€

이 μ˜ˆμ œμ—μ„œλŠ” video νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€λ₯Ό μžλ™μœΌλ‘œ μž¬μƒν•˜κ³  μ»¨νŠΈλ‘€μ„ μΆ”κ°€ν•˜λŠ” 방법을 μ•Œλ €λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€. μ•„λž˜μ˜ μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€λ₯Ό μ›Ή νŽ˜μ΄μ§€μ— μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

<video src="video.mp4" autoplay controls></video>

μœ„μ˜ μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  • <video> νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€ μ½˜ν…μΈ λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.
  • src 속성을 μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€ 파일의 경둜λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€. μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” "video.mp4" νŒŒμΌμ„ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ μ‚¬μš©ν•˜λŠ” λΉ„λ””μ˜€ 파일의 경둜둜 μˆ˜μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • autoplay 속성을 μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€κ°€ μžλ™μœΌλ‘œ μž¬μƒλ˜λ„λ‘ μ„€μ •ν•©λ‹ˆλ‹€. νŽ˜μ΄μ§€κ°€ λ‘œλ“œλ˜λ©΄ μžλ™μœΌλ‘œ λΉ„λ””μ˜€κ°€ μ‹œμž‘λ©λ‹ˆλ‹€.
  • controls 속성을 μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€ ν”Œλ ˆμ΄μ–΄μ— 컨트둀러λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ μ‚¬μš©μžλŠ” λΉ„λ””μ˜€λ₯Ό μž¬μƒ, μΌμ‹œμ •μ§€, λ‹€μ‹œμƒμ„±, μ‹œκ°„ μŠ€ν‚΅ 등을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μœ„μ˜ μ½”λ“œλ₯Ό μ›Ή νŽ˜μ΄μ§€μ— μΆ”κ°€ν•˜λ©΄, μ§€μ •λœ λΉ„λ””μ˜€ 파일이 μžλ™μœΌλ‘œ μž¬μƒλ˜λŠ” λΉ„λ””μ˜€ ν”Œλ ˆμ΄μ–΄κ°€ λ‚˜νƒ€λ‚©λ‹ˆλ‹€. μ‚¬μš©μžλŠ” 컨트둀러λ₯Ό μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€λ₯Ό μ‘°μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•¨μœΌλ‘œμ¨ μ‚¬μš©μžλŠ” νŽ˜μ΄μ§€λ₯Ό λ°©λ¬Έν•˜μžλ§ˆμž μžλ™μœΌλ‘œ μž¬μƒλ˜λŠ” λΉ„λ””μ˜€λ₯Ό μ‹œμ²­ν•˜κ³ , ν•„μš”μ— 따라 μž¬μƒμ„ μΌμ‹œμ •μ§€ν•˜κ±°λ‚˜ μŠ€ν‚΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

5. video νƒœκ·Έ 예제: λΉ„λ””μ˜€ ν’ˆμ§ˆ μ‘°μ • 및 μžλ§‰ μΆ”κ°€

이 μ˜ˆμ œμ—μ„œλŠ” video νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€ ν’ˆμ§ˆμ„ μ‘°μ •ν•˜κ³  μžλ§‰μ„ μΆ”κ°€ν•˜λŠ” 방법을 μ•Œλ €λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€. μ•„λž˜μ˜ μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ›ν•˜λŠ” λΉ„λ””μ˜€ ν’ˆμ§ˆκ³Ό μžλ§‰μ„ 지정할 수 μžˆμŠ΅λ‹ˆλ‹€:

<video src="video.mp4" controls>
  <source src="video_low.mp4" media="(max-width: 480px)">
  <source src="video_high.mp4" media="(min-width: 481px)">
  <track src="captions.vtt" kind="captions">
</video>

μœ„μ˜ μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  • <video> νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€ μ½˜ν…μΈ λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.
  • src 속성을 μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€ 파일의 경둜λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€. μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” "video.mp4" νŒŒμΌμ„ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ μ‚¬μš©ν•˜λŠ” λΉ„λ””μ˜€ 파일의 경둜둜 μˆ˜μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • controls 속성을 μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€ ν”Œλ ˆμ΄μ–΄μ— 컨트둀러λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ μ‚¬μš©μžλŠ” λΉ„λ””μ˜€λ₯Ό μž¬μƒ, μΌμ‹œμ •μ§€, λ‹€μ‹œμƒμ„±, μ‹œκ°„ μŠ€ν‚΅ 등을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • <source> νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ λΉ„λ””μ˜€ 파일의 ν’ˆμ§ˆμ„ μ§€μ •ν•©λ‹ˆλ‹€. λ―Έλ””μ–΄ 쿼리λ₯Ό μ‚¬μš©ν•˜μ—¬ 뷰포트의 λ„ˆλΉ„μ— 따라 λ‹€λ₯Έ λΉ„λ””μ˜€ νŒŒμΌμ„ 선택할 수 μžˆμŠ΅λ‹ˆλ‹€. μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” 뷰포트의 μ΅œλŒ€ λ„ˆλΉ„κ°€ 480px일 λ•Œ "video_low.mp4" νŒŒμΌμ„ μ„ νƒν•˜κ³ , 그보닀 큰 경우 "video_high.mp4" νŒŒμΌμ„ μ„ νƒν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•¨μœΌλ‘œμ¨ μ‚¬μš©μžμ˜ μž₯μΉ˜μ— 따라 μ΅œμ ν™”λœ λΉ„λ””μ˜€ ν’ˆμ§ˆμ„ μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • <track> νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ μžλ§‰μ„ μΆ”κ°€ν•©λ‹ˆλ‹€. src 속성을 μ‚¬μš©ν•˜μ—¬ μžλ§‰ 파일의 경둜λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€. μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” "captions.vtt" νŒŒμΌμ„ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ μ‚¬μš©ν•˜λŠ” μžλ§‰ 파일의 경둜둜 μˆ˜μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. kind 속성을 μ‚¬μš©ν•˜μ—¬ μžλ§‰μ˜ μœ ν˜•μ„ μ§€μ •ν•©λ‹ˆλ‹€. μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” "captions"둜 μ§€μ •λ˜μ–΄ 있으며, μ΄λŠ” 일반적인 μžλ§‰ μœ ν˜•μž…λ‹ˆλ‹€.

μœ„μ˜ μ½”λ“œλ₯Ό μ›Ή νŽ˜μ΄μ§€μ— μΆ”κ°€ν•˜λ©΄, μ§€μ •λœ λΉ„λ””μ˜€ 파일의 ν’ˆμ§ˆμ— 따라 μ μ ˆν•œ λΉ„λ””μ˜€κ°€ μ‚¬μš©μžμ—κ²Œ μ œκ³΅λ©λ‹ˆλ‹€. 뷰포트의 λ„ˆλΉ„μ— 따라 μ„œλ‘œ λ‹€λ₯Έ λΉ„λ””μ˜€ νŒŒμΌμ„ μ„ νƒν•¨μœΌλ‘œμ¨, μ‚¬μš©μžμ˜ μž₯치 및 μ—°κ²° μƒνƒœμ— μ΅œμ ν™”λœ λΉ„λ””μ˜€ ν”Œλ ˆμ΄μ–΄λ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, μžλ§‰μ„ μΆ”κ°€ν•˜μ—¬ μ‚¬μš©μžκ°€ ν•„μš”ν•œ 경우 λΉ„λ””μ˜€μ™€ ν•¨κ»˜ μžλ§‰μ„ λ³΄κ±°λ‚˜ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λŒ“κΈ€