Version: 2019.2
동영상 소스
비디오 파일 이해

비디오 파일 호환성

다양한 포맷의 비디오 파일을 Unity로 임포트할 수 있습니다. Unity는 임포트한 비디오 파일을 VideoClip 에셋으로 저장합니다.

Unity가 아무런 문제 없이 비디오 파일을 미리볼 수 있으려면 비디오 파일이 에디터 플랫폼(Unity가 실행 중인 플랫폼)과 호환되어야 합니다. 또한 비디오 파일은 프로젝트를 빌드할 때 프로젝트가 실행되는 타겟 플랫폼과도 호환되는지 확인해야 합니다. Unity는 파일을 공통으로 지원되는 포맷으로 변환할 수 있도록 여러 옵션을 제공하지만, 호환성을 직접 관리할 수도 있습니다. 자세한 내용은 아래의 타겟 플랫폼과의 호환성을 참조하십시오.

에디터 플랫폼과의 호환성

비디오 소스 파일은 에디터 플랫폼이 지원하는 포맷을 사용해야 합니다. 각 플랫폼은 다양한 하위 집합의 비디오 파일 포맷을 지원합니다.

확장자 Windows OSX Linux
.asf
.avi
.dv
.m4v
.mov
.mp4
.mpg
.mpeg
.ogv
.vp8
.webm
.wmv

비디오 파일 트랙은 지원되는 코덱으로 인코딩되어야 합니다. 각 플랫폼은 특정한 코덱 하위 집합을 지원하며, 이는 플랫폼 버전에 따라 다를 수 있습니다.

미지원 코덱으로 트랙을 인코딩하면 에디터에 오류 메시지가 표시되며, 호환 코덱으로 전환하거나 다시 인코딩해야 사용할 수 있습니다.

대부분의 플랫폼의 경우 H.264(일반적으로 .mp4, .m4v, .mov 포맷)는 여러 플랫폼과 호환성이 가장 우수하므로, 최적의 비디오 코덱입니다. Linux는 대표적인 예외입니다.

Linux의 경우 최적의 인코딩은 대개 VP8 코덱으로 인코딩된 비디오 트랙과 Vorbis 코덱으로 인코딩된 오디오가 포함된 .webm 컨테이너입니다.

코덱 지원에 관한 자세한 내용은 에디터 플랫폼의 공식 문서를 참조하십시오. 예를 들어 Windows와 macOS는 둘 다 코덱 호환성 문서를 제공합니다.

비디오 클립 임포터를 이용하면 Unity로 임포트하는 비디오 파일을 변환할 수 있습니다. 이는 비디오 소스가 에디터 플랫폼에서 지원되지만 타겟 플랫폼에서는 지원되지 않는 코덱을 사용할 때 유용합니다. 아래의 타겟 플랫폼과의 호환성을 참조하십시오.

에디터에서 지원되지 않는 비디오 파일 사용

타겟 플랫폼과는 호환되지만 에디터 플랫폼과는 그렇지 않은 비디오 파일을 사용하려면 스트리밍 에셋으로 설정하십시오. 예를 들어 에디터가 VP8만 지원하더라도 Android 빌드에 대해서는 VP9 코덱을 사용해야 합니다.

비디오 파일을 스트리밍 에셋으로 설정하려면 비디오 파일을 프로젝트의 StreamingAssets 폴더에 넣으면 됩니다. Video Player 컴포넌트가 스트리밍 에셋을 가리키도록 만들려면 URL 프로퍼티를 사용하십시오. Application.streamingAssetsPath를 사용하면 스크립트를 통해 스트리밍 에셋에 대한 플랫폼별 경로에 액세스할 수도 있습니다.

이런 방식으로 비디오 파일을 사용할 때에는 에디터에서 미리보기가 불가능합니다. 하지만 플레이스홀더로 사용할 에디터 호환 버전을 만들고, 호환 버전과 비호환 버전을 모두 프로젝트에 포함하고, 런타임 시점에 사용할 버전을 결정할 수 있습니다.

아래 예제에서는 플랫폼별로 다양한 비디오 URL을 사용하는 방법을 보여줍니다. 자세한 내용은 플랫폼 기반 컴파일 문서를 참조하십시오.

void SetupMovieFile(VideoPlayer vp)
{
# if UNITY_EDITOR || UNITY_LINUX
vp.url = pathToMyVp8File;
# elif UNITY_ANDROID
vp.url = pathToMyVp9File;
# elif UNITY_STANDALONE_WIN
vp.url = pathToMyWmvFile;
# else
vp.url = pathToMyMp4File;
# endif
}

타겟 플랫폼과의 호환성

VideoPlayer 컴포넌트는 에디터 플랫폼의 네이티브 오디오 및 비디오 디코딩 라이브러리를 사용(상기 에디터 플랫폼과의 호환성 참조)하여 에디터에서 비디오 파일을 재생합니다. 해당 비디오 파일이 타겟 플랫폼의 요구 사항을 충족하는지 꼭 확인하십시오.

인코딩 권장 사항

  • 하드웨어 가속을 위해 지원되는 최고의 네이티브 방식 비디오 코덱은 H.264입니다.

  • VP8은 크로스 플랫폼 지원에 대한 우선 순위가 높을 때 사용하면 좋습니다. 이 코덱은 널리 지원되고 포괄적인 기능을 포함하고 있지만, H.264와 같은 하드웨어 가속 코덱보다 리소스를 더 많이 소모합니다.

  • H.265는 지원되는 기기에서만 사용할 수 있습니다. 자세한 내용은 아래의 H.265 호환성을 참조하십시오.

  • Android는 네이티브 라이브러리를 사용하여 VP8을 지원합니다. 따라서 VP8은 일부 Android 기기에서 하드웨어 지원을 받을 수도 있습니다.

  • .ogv 포맷은 Unity 에디터에서 지원되지만 대다수의 다른 플랫폼에서 지원되지 않습니다. 타겟 플랫폼에 따라 .ogv 파일을 .mp4(H.264) 또는 .webm(VP8)으로 변환하십시오.

주요 인코딩 값

아래에는 인코딩 파라미터에서 눈여겨봐야 할 일부 키 값이 나와 있습니다.

  • 비디오 코덱: H.264, H.265 또는 VP8.

  • 해상도: 예: 1280 x 720

  • 프로파일: H.264/H.265에 적용됩니다. 프로파일은 기능 및 제약의 집합으로, 대개 Baseline, Main 등과 같은 공급업체에서 지정합니다. H.264 또는 H.265를 참조하십시오.

  • 프로파일 레벨: H.264/H.265에 적용됩니다. 특정 프로파일 내에서 레벨은 성능 요구 사항(예: Baseline 3.1)을 지정합니다. H.264 또는 H.265를 참조하십시오.

  • 오디오 코덱: 일반적으로 AAC (for mp4 videos using H.264/H.265) 또는 Vorbis(VP8을 사용하는 webm 비디오의 경우)입니다.

  • 오디오 채널: 플랫폼에 따라 다릅니다. 예를 들어 Android 권장 사항은 스테레오 파일이지만, 많은 기기에서 5.1 채널을 허용합니다.

비디오 클립 변환

비디오 클립 임포터는 비디오 클립 에셋을 다음 비디오 코덱 중 하나로 변환하기 위한 옵션을 제공합니다.

변환된 비디오 클립은 자동으로 적절한 오디오 코덱을 사용합니다.

  • H.264 또는 H.265를 사용하여 인코딩된 AAC 비디오
  • VP8을 사용하여 인코딩된 비디오용 Vorbis
참고:
비디오 클립 임포터는 기본 변환 옵션만 제공합니다. 소스 파일의 인코딩 방식에 따라 임포터 옵션을 사용하여 변환된 클립에서 최적의 성능을 이끌어내지 못할 수도 있습니다. 이 경우 외부 변환 프로그램을 사용하여 결과를 개선할 수 있습니다.

외부 변환 프로그램을 사용하여 비디오 클립 인코딩

타겟 시스템이 지원하는 비디오를 사용하는 경우 비디오 클립 임포터의 변환 옵션을 비활성화된 상태로 유지할 수 있습니다. 이 경우 Unity는 파일을 전혀 수정하지 않으며 있는 그대로 사용합니다. 세부 조정이 가능한 외부 프로그램을 사용하여 인코딩을 관리할 수도 있습니다.

호환성 참고사항

이 섹션에서는 비디오 호환성에 대한 유용한 정보와 외부 리소스 링크를 제공합니다.

미디어 지원에 대한 공급업체 권장 사항

코덱 지원에 대한 공급업체 권장 사항을 따르는 것이 중요합니다. 일부 코덱은 특히 오래된 모바일 플랫폼에서는 제약을 받습니다. 따라서 여러 기기에서 실행되는 게임에 포함할 비디오는 신중하게 검사하고 전환 및 재인코딩해야 할 수 있습니다.

알려진 문제

이 섹션에서는 특정 플랫폼에서 알려진 일부 문제들을 다룹니다.

Android
  • 모든 기기가 640 x 360보다 큰 해상도를 지원하는 것은 아닙니다. 런타임 검사를 통해 지원 여부를 검증한 후 실패 시 동영상이 재생되지 않습니다.

  • Android Lollipop(5.0 및 5.1.1) 이상에서는 타겟 디바이스가 지원하는 범위 내에서 모든 해상도 또는 오디오 채널 수를 사용할 수 있습니다.

  • 포맷 호환성 문제는 adb logcat 출력에 보고되며 항상 AndroidVideoMedia 접두사가 붙습니다.

  • Unity의 오류 메시지 근처에 있는 기기별 오류 메시지에 초점을 맞추십시오. 엔진에 대해서는 이용할 수 없지만, 호환성 문제를 파악하는 데는 종종 도움이 됩니다.

  • 에셋 번들에서의 재생은 압축되지 않은 번들에 대해서만 지원되고 디스크에서 직접 읽습니다.

  • 네이티브 webM/VP8 투명도는 지원되지 않습니다. Android에서 투명도가 동작하도록 만들려면 VP8로 인코딩된 webM 클립을 변환해야 합니다.

WebGL
Windows
  • Windows 7에는 Windows 8 이상보다 더 낮은 해상도 제한이 적용됩니다. 예를 들어 H.264 코덱은 1980x1088 해상도로 제한됩니다. 자세한 내용은 공급업체 문서를 참조하십시오.

H.265 호환성

아래 표에는 플랫폼별 요구 사항과 H.265 코덱의 인코딩/디코딩 정보가 나와 있습니다.

플랫폼: 요구 사항: 인코딩/디코딩: 참고
OSX SDK 10.13+ 하드웨어 인코딩: 6세대 Intel Core 프로세서

소프트웨어 인코딩: 모든 Mac

하드웨어 디코딩: 6세대 Intel Core 프로세서

소프트웨어 디코딩: 모든 Mac
Windows Windows 10 + HEVC 확장 기능 인코더

디코더
HEVC 확장 기능(하드웨어만 해당)

HEVC 확장 기능(하드웨어 + 소프트웨어 지원)
iOS SDK 11.0+ 하드웨어 디코딩: A9 칩

소프트웨어 디코딩: 모든 iOS 기기
tvOS SDK 11.0+
XBox 여기를 참조하십시오.
UWP Windows 10 이상. 여기를 참조하십시오. H.265 지원이 표시되어도 기기 제품군 내 모든 기기에서 반드시 지원되는 것은 아닙니다.
Android 5.0 이상. 여기를 참조하십시오.

  • 2019–05–07 페이지 수정됨

  • Unity 5.6의 새로운 기능

동영상 소스
비디오 파일 이해