유니티에서 안드로이드 폰의 갤러리에서 비디오를 불러와 재생하는 방법이다.
1. UnityNativeGallery 유니티 패키지 다운로드 후 설치
https://github.com/yasirkula/UnityNativeGallery
2. 코드 작성
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using UnityEngine.Video;
public class playVideo : MonoBehaviour {
public VideoPlayer vp;
public RawImage videoDisplay; //비디오 화면을 표시할 RawImage
public void PlayVideo() {
//사진과 동영상들 중 선택 가능
NativeGallery.GetMixedMediaFromGallery((media) => {
FileInfo selectedMedia = new FileInfo(media);
if (!string.IsNullOrEmpty(media)) {
//mp4 파일을 불러오고 싶은 경우
if (media.Substring(media.Length - 3, 3) == "mp4")
StartCoroutine(LoadVideo(media));
}
}, NativeGallery.MediaType.Image | NativeGallery.MediaType.Video);
}
IEnumerator LoadVideo(string videoPath)
{
yield return null;
//선택한 경로의 비디오 파일 읽기
var tempVideo = File.ReadAllBytes(videoPath);
if (vp == null)
vp = gameObject.AddComponent<VideoPlayer>();
//VideoPlayer에 소스 비디오 지정
vp.url = videoPath;
vp.source = VideoSource.Url;
//비디오 화면을 표시할 videoDisplay의 texture를 VideoPlayer의 targetTexture로 지정
videoDisplay.texture = vp.targetTexture;
vp.Prepare();
while (!vp.isPrepared)
yield return null;
//재생
vp.Play();
}
}
3. 비디오 렌더링을 위한 Render Texture 생성 후 Size(가로 x 세로 해상도) 지정
4. 해당 스크립트를 붙인 오브젝트에 Video Player 컴포넌트 추가. Target Texture를 위에서 생성한 Render Texture로 지정
5. 스크립트의 VideoPlayer와 RawImage 지정
반응형
'Unity' 카테고리의 다른 글
[Unity] 갤러리에서 이미지 불러오기 (0) | 2022.06.06 |
---|---|
[Unity] 안드로이드 네비게이션 바 색상 변경 (0) | 2022.06.05 |
[Unity] 스크립트에서 오브젝트 anchor, pivot 변경하는 방법 (0) | 2021.08.11 |
[Unity] 스크립트에서 버튼 색상 변경하는 방법 (0) | 2021.07.29 |
[Unity] Visual Studio에서 유니티 프로젝트 디버깅 하는 방법 (0) | 2021.07.15 |