EasyMovieTexture For Android 매뉴얼 포멧및해상도 지원포멧 : Android : https://developer.android.com/guide/appendix/media-formats.html?hl=ko ios : https://developer.apple.com/library/content/documentation/miscellaneous/conceptual/iphoneostec hoverview/medialayer/medialayer.html 지원해상도 : Android: 일반디바이스의경우 1920*1080 까지지원합니다. 최신디바이스의경우 4k 까지지원합니다. ios: 일반디바이스의경우 1920*1080 까지지원합니다. 최신디바이스의경우 2560 * 1440 까지지원합니다.. 4k 해상도의경우아이폰 6s plus 이상을지원합니다. Project Setting 먼저스트리밍서비스와 sdcard 의영상을사용하기위해서는아래와같이셋팅하여야합니다. (File->BuildSettings->PlayerSettings->OtherSettings)
ios 의경우 Unity 버전 4.X 의경우, EasyMovieTexture 폴더안에 Unity463_Patch_IOS 가있습니다. 버전에 맞게패치해주세요. 디버그모드사용시아래와같이사용하세요.
AppleTV (tvos) 사용시설정 1. 아래이미지와같이설정해주세요. VideoManger 사용 먼저 Prefab 폴더의 VideoManager 를선택합니다.
선택한 VideoManager 를 Hierarchy Browser 로이동시킵니다. 이동된 VideoManager 를선택하면 Inspector 창에옵션들이보입니다. 해당의옵션의설명은다음과같습니다. i. StrFileName : 재생하려는파일명을입력하시면됩니다. 1. StreamingAssets 의영상의경우일반적인파일명을적으시면됩니다. 2. SDCard 의영상의경우 file:///sdcard/test.mp4 같이절대경로로입력하시면됩니다. 3. Streaming 영상의경우 http://www.test.com/test.mp4 같이 URL 을입력하시면됩니다. ii. Target Material : 영상 Texture 로교체하려는 GameObject 를연결시켜줍니다.( 여기서는자 기자신을연결시켜놓았습니다.)
iii. iv. BFull Screen : 풀스크린영상의경우에만사용합니다. (FullScreen Prefab 에서만체크되어있고나머지경우체크를해제해주시기바랍니다.) BSupport Rockchip : Rockchip 의칩셋의경우비디오버퍼가 16bit 밖에지원이안되는문제가있습니다. 또한 Rockchip 의경우 Asset[StreamingAssets 폴더 ] 의영상을직접적으로접근하여플레이할경우정상적으로플레이가안되는문제가있습니다. 그부분을해결하기위한코드의사용여부입니다. ( 사용시퀄리티가약간떨어질수있습니다.) v. ScaleValue : 어느축을기준으로게임오브젝트를리사이즈할것인지설정합니다. vi. objresize : 어떤게임오브젝트를리사이즈할것인지설정부분입니다. 만약 null 이면아무런 행동도하지않습니다. vii. bloop : 영상이끝날때자동반복재생을할지여부입니다. viii. bautoplay : 게임오브젝트가활성화될때자동으로플레이할지여부입니다. 기본적인함수사용법 1. void Load(string strfilename); Load 하려는파일명또는 URL 을입력하시면됩니다. 기본적으로다른영상이재생중이면자동으로플레이중인영상을 UnLoad 시킨후 Load 합니다. 파일명또는 URL 은다음과같이입력하시면됩니다. StreamingAssets 의영상의경우일반적인파일명을적으시면됩니다. SDCard 의영상의경우 file:///sdcard/test.mp4 같이절대경로로입력하시면됩니다. Streaming 영상의경우 http://www.test.com/test.mp4 같이 URL 을입력하시면됩니다. 2. void Play(); 영상을재생합니다. 일반적으로 Stop 또는 Pause 또는 Ready 상태에서호출시영상이재생됩니다. 3. void Stop(); 영상을멈춥니다. Stop() 호출후플레이시처음부터플레이됩니다. 4. void Pause(); 영상을일시적으로멈춥니다. Pause() 호출후플레이시멈춘부분부터플레이됩니다.
5. void UnLoad(); 현재영상을메모리에서제거합니다. 현재상태에상관없이호출하시면됩니다. 6. int GetDuration(); 현재영상의총길이를가져옵니다. Milliseconds 단위로가져옵니다. 스트리밍서비스의경우 -1 을리턴합니다. 스트리밍서비스의경우 GetCurrentSeekPercent() 함수를사용하여야합니다. 7. int GetCurrentSeekPercent(); ( 안드로이드전용,iOS 에서는동작하지않습니다.) 스트리밍서비스의버퍼링정도를나타냅니다. MediaPlayer API 에따르면다음과같은동작을합니다. Get update status in buffering a media stream received through progressive HTTP download. The received buffering percentage indicates how much of the content has been buffered or played. For example a buffering update of 80 percent when half the content has already been played indicates that the next 30 percent of the content to play has been buffered. the percentage (0-100) of the content that has been buffered or played thus far 8. int GetVideoWidth(), int GetVideoHeight () 각각현재의영상의너비와높이를가져옵니다. 9. void SeekTo(int iseek) 영상재생위치를변경합니다. ms 단위입니다. 10. int GetSeekPosition() 현재영상재생위치를가져옵니다. Ms 단위입니다. 11. Void SetVolume(float fvolume) 볼륨을조절합니다. (0~1.0) 12. SetSpeed() 영상재생스피드를조절합니다. (0 ~ 3.0), 안드로이드의경우 6.0 이상부터동작합니다. 13. GetCurrentState() 현재플레이어상태값을가져옵니다. 상태값은아래와같습니다. public enum MEDIAPLAYER_STATE { NOT_READY = 0, READY = 1, END = 2, PLAYING = 3, PAUSED = 4, STOPPED = 5, ERROR = 6 14. DeleteVideoTexture() 플레이종료후, 마지막프레임캐시를삭제할때사용합니다.
일반적으로는사용하지마세요. 기본적인이벤트사용법 기본적으로아래와같은이벤트가있습니다. public VideoResize OnResize; // 비디오사이즈가변경될때 public VideoReady OnReady; // 비디오사용이준비되었을때 public VideoEnd OnEnd; // 비디오가끝났을때 public VideoError OnVideoError;// 에러발생시 public VideoFirstFrameReady OnVideoFirstFrameReady; // 비디오의첫화면이준비되었을때 public class MediaPlayerEvent : MonoBehaviour { public MediaPlayerCtrl m_srcvideo; // Use this for initialization void Start () { m_srcvideo.onready += OnReady; m_srcvideo.onvideofirstframeready += OnFirstFrameReady; m_srcvideo.onvideoerror += OnError; m_srcvideo.onend += OnEnd; m_srcvideo.onresize += OnResize; // Update is called once per frame void Update () { void OnReady() { Debug.Log ("OnReady"); void OnFirstFrameReady() { Debug.Log ("OnFirstFrameReady");
void OnEnd() { Debug.Log ("OnEnd"); void OnResize() { Debug.Log ("OnResize"); void OnError(MediaPlayerCtrl.MEDIAPLAYER_ERROR errorcode, MediaPl ayerctrl.mediaplayer_error errorcodeextra){ Debug.Log ("OnError"); 참고사항 1. ios 의경우 Unity Pro 가요구됩니다. ( Unity 4.X 의경우, Unity 5.X 에서는 Pro 버전이필요하지않습니다.) 2. Android 버전 4.0 이상을요구합니다. 3. 멀티쓰래드랜더링은유니티 5.0 부터지원합니다.