잡담

Windows용 MonoGame에서 비디오 재생하기

로고를 보여주는 화면을 MonoGame을 사용하는 프레임워크에 집어놓고 있던 중, 이미지 뿐 아니라 비디오 파일도 재생해보자 싶어서 비디오를 재생하도록 코드를 작성했습니다.

그리고 첫 테스트를 위해 실행을 시작한 순간, 오류에 봉착했죠. “Platform returned a null texture”라는 오류를 내뿜었습니다. DirectX 버전 MonoGame은 내부적으로 미디어 파일을 위해 Windows Media Foundation을 사용합니다. 비디오를 재생하지 못 할 수가 없죠.

테스트에 사용한 파일은 Youtube에 올라와있는 6초짜리 AMD Radeon HD 로고 동영상입니다. 이 Youtube에서 인코딩한 파일을 Media Foundation이 제대로 디코딩하지 못한다는 생각에 인코더를 이용해 H.264/AAC 재인코딩을 했습니다. 그러자 잘 나오기 시작했죠. Youtube도 기본적으로는 H.264/AAC 인코딩을 수행합니다만, 값이 무언가 잘못되어 있는건지 제대로 된 재생을 못 하는 것이었습니다.

혹시 MonoGame을 사용하면서 비디오 재생이 안 된다면 첫 번째로 MP4 파일인지 확인할 것, 두 번째로 H.264/AAC 인코딩이 적용된 파일인지 확인할 것, 마지막으로 비디오 파일을 재인코딩 해볼 것을 추천합니다. 비디오 파일이 아예 재생이 안 되는 플랫폼(리눅스)에는 Video 및 VideoPlayer 클래스가 노출되어 있지 않습니다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.