프로그래밍/Unity 2017. 8. 3. 03:13

이 문서는 Unity 2017.1.0f3 ver.에 쓴 문서이다.


VideoPlayer는 Unity 5.6f이상 부터 지원한 기능이다.


* AndroidSupported Media Formats. See additional notes below.
* WindowsH.264 Video Decoder (see Format Constraints)
* iPhone 6-7Compare 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

유니티의 내부의 오디오 처리를 거치지 않고 바로 오디오 출력 하드웨어로 전송된다.

● Controlled Tracks : URL에서만 적용 할 수 있다.

비디오의 오디오 트랙 수이다.

소스가 비디오 클립인 경우 비디오 파일을 검사하여 트랙 수를 결정한다.




기본적인 스크립트 사용법


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
posted by 천마서생
: