이 문서는 Unity 2017.1.0f3 ver.에 쓴 문서이다.
VideoPlayer는 Unity 5.6f이상 부터 지원한 기능이다.
* Android: Supported Media Formats. See additional notes below.
* Windows: H.264 Video Decoder (see Format Constraints)
* iPhone 6-7: Compare iPhone Models (see TV and Video)
위에는 각 기기별 지원하는 동영상의 형식이다.
( .dv , .mp4 , .mpg, .mpeg, .m4v , .ogv , .vp8 , .webm )
● Source : Video Clip / URL이 있다.
Video Clip을 이용하면 간단하게 유니티 프로젝트 폴더에 동영상 파일을 넣은 다음 그걸 Drag & Drop 해주면 된다.
URL의 경우에는 http:// 혹은 file:// 을 이용해서 동영상을 찾아서 가져온다.
(주의사항 : http를 이용할 경우 파일 형식이 .mp4등 실제 동영상 주소를 가져와야한다. 예를들어 유튜브 주소로는 영상을 불러오지 못한다.)
● Play On Awake : Awake때 실행 할지의 여부를 묻는다.
● Wait For First Frame : Play On Awake이 켜져있을때 번째 프레임이 텍스처에 로드 될 때까지 기다릴 지 여부를 결정한다. 끌 경우 초기 몇 프레임이 짤려나가는 불상사가 있을 수 있다.
● Loop : 반복 여부를 묻는다.
● Playback Speed : 영상 재생 속도를 결정한다. 1은 기본 속도이다.
● Render Mode
Render Mode | |||
Camera Far Plane | 영상을 카메라의 Far Plane에서 실행한다. | ||
Camera Near Plane | 영상을 카메라의 Near Plane에서 실행한다. | ||
- Camera | 영상을 보여줄 카메라를 넣어준다. | ||
- Alpha | 영상의 알파 값을 적용한다.(알파 값을 낮추면 영상 뒤에 있는 Plane을 볼 수 있다.) | ||
Render Texture | 영상을 Texture에서 실행한다. | ||
- Target Texture | 영상을 실행할 Texture을 넣어준다. | ||
Material Override | 선택된 GameObject의 Material에서 영상을 실행한다. | ||
- Renderer | 영상을 실행할 GameObject를 넣는다. None일 경우에는 Video Player Component가 적용된 GameObject의 메터리얼에서 실행된다. | ||
- Material Property | 비디오를 재생할 메터리얼을 선택한다. | ||
API Only | 비디오를 재생할 객체를 스크립트만으로 적용하게 한다. |
● Audio Output Mode : 소리를 어떻게 재생 할 것인지 결정한다.
Audio Output Mode | |||
None | 소리를 재생하지 않는다. | ||
Audio Source | 오디오 소스를 삽입하여 재생 시킬 수 있다. (Unity 내부의 오디오 처리가 적용 될 수 있다. | ||
Direct | 유니티의 내부의 오디오 처리를 거치지 않고 바로 오디오 출력 하드웨어로 전송된다. |
비디오의 오디오 트랙 수이다.
소스가 비디오 클립인 경우 비디오 파일을 검사하여 트랙 수를 결정한다.
기본적인 스크립트 사용법
VideoPlayer는 UnityEngine.Video에 있다.
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class VideoController : MonoBehaviour
{
RawImage Image;
VideoPlayer vidio;
AudioSource audio;
void Awake()
{
Image = GetComponent<RawImage>();
vidio = gameObject.AddComponent<VideoPlayer>();
audio = gameObject.AddComponent<AudioSource>();
vidio.playOnAwake = false;
audio.playOnAwake = false;
audio.Pause();
PlayVideo();
}
public void PlayVideo()
{
StartCoroutine(playVideo());
}
IEnumerator playVideo()
{
vidio.source = VideoSource.Url;
vidio.url = "file://D:/하늘.mp4";
vidio.audioOutputMode = VideoAudioOutputMode.AudioSource;
vidio.EnableAudioTrack(0, true);
vidio.SetTargetAudioSource(0, audio);
vidio.Prepare();
WaitForSeconds waitTime = new WaitForSeconds(1.0f);
while (!vidio.isPrepared)
{
Debug.Log("동영상 준비중...");
yield return waitTime;
}
Debug.Log("동영상이 준비가 끝났습니다.");
Image.texture = vidio.texture;
vidio.Play();
audio.Play();
Debug.Log("동영상이 재생됩니다.");
while (vidio.isPlaying)
{
Debug.Log("동영상 재생 시간 : " + Mathf.FloorToInt((float)vidio.time));
yield return null;
}
Debug.Log("영상이 끝났습니다.");
}
}
'프로그래밍 > Unity' 카테고리의 다른 글
unity JsonUtility 사용법. (저장 / 불러오기) (0) | 2016.07.20 |
---|---|
오브젝트 풀 (0) | 2016.07.15 |
LitJSON 파일 있는지 없는지 확인 함수 (0) | 2016.07.10 |