안드로이드 앱에 동영상을 넣고 싶을 때, 보통 유투브를 가장 먼저 떠올린다. 유투브를 내 어플리케이션에 연결하는 대표적인 방법은 아래와 같다.
구현 방법에 대한 좋은 글들이 인터넷에 많이 있으므로, 여기서는 3가지 방법의 차이점에 대해 살펴본다.
바로가기
영상을 내 앱에서 재생하지 않고, 유투브 공식 앱이나 사이트로 뛰는 방법이다. 대부분의 안드로이드 단말에는 유투브 앱이 기본 앱으로 설치되어 있어 있으므로, 쉽게 쓸 수 있다. 보통 Intent를 이용해 유투브 앱의 영상을 호출하거나 유투브 라이브러리를 이용한다.
먼저, Intent를 이용해 호출 하는 방법을 살펴보자. 코드는 아주 간단하다. 한국이나 미국, 유럽 등에서 판매되는 안드로이드 단말에서 잘 실행된다. 하지만, 구글 인증을 받지 않은 단말은 유투브 앱이 없을 수 있고, 중국처럼 유투브 서비스 자체가 막힌 곳도 있으므로 이 때를 위한 예외처리를 직접해야 한다.
다음으로, 유투브 라이브러리를 이용하는 방법이 있다. 유투브 라이브러리 내의 YouTubeIntents라는 클래스에 관련 API가 모두 모여있다. API를 이용하면, 유투브 앱이 설치되어 있는지, 영상이 재생 가능한 상태인지 등을 확인 후 유투브 앱 내의 영상으로 이동한다. 그러므로, 예외처리 없이 안전하게 사용할 수 있다.
유투브 앱이 없는 경우, 웹 브라우저를 통해 유투브 사이트의 영상 페이지로 이동할 수도 있다. 아래는 간략한 코드다.
Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse( "http://youtu.be/" + <비디오 아이디> )); startActivity( intent );
유투브 IFrame Player
유투브는 IFrame을 이용해 웹 페이지에 동영상을 연결하는 기능을 공식적으로 지원한다.
이 IFrame Player를 조절하기 위한 다양한 파라미터들을 정의하고 있으므로, 이를 통해 유투브 영상이 보여지는 방식을 조절할 수 있다.
간혹 “YouTube에서 동영상을 시청하세요. 동영상 소유자가 다른 웹사이트에서 재생할 수 없도록 설정하였습니다.” 메시지가 나오는 영상이 있다. 동영상 퍼가기를 허용하지 않은 경우 발생하는 것으로, ‘동영상 퍼가기’에 대한 설명은 여기를 보자. 당장 문제를 해결하고 싶다면 아래를 참고하자.
- 유투브 사이트 > 로그인 > 우측 상단 메뉴 > 크리에이터 스투디오 > 위 메시지가 나오는 동영상의 수정 버튼 클릭 > 고급 설정 탭 선택 > ‘퍼가기 허용’ 체크박스 채우기
개인적으로 IFrame 플레이어 파라미터가 일부(rel, showinfo 파라미터) 일시적으로 동작하지 않는 경험이 있었다. 몇일 내에 다시 고쳤는지 재현되지 않았다.
유투브 Android Player
안드로이드 용 유투브 플레이어를 라이브러리로 제공한다. 권장하는 비디오 재생 모양과 샘플들도 함께 제공하므로, 쉽게 적용할 수 있다.
문서화가 아주 잘되어 있으니, 여기를 참고하자.
주의할 점은 앱에 안드로이드 Player를 사용하기 위해서는 API 키가 필요하고, 이 키는 구글 개발자 등록(최초 1회 유료)을 해야 발급 받을 수 있다. 이에 대한 절차는 여기에 소개되어 있으니 참고하자.
그 밖에
- 3가지 방법 모두 쉽게 적용할 수 있으므로 현재 상황에 가장 적합한 것을 적용하면 된다. 링크 정도면 충분하다면 바로가기를, 웹 페이지의 일부로 보이고 싶다면 IFrame Player를, 네이티브 앱으로 보여주고 싶다면 Android Player를 써보자.
- 유투브를 비디오 스트리밍 프로바이더처럼 쓰기는 매우 어렵다. 예를 들어, 유투브 로고를 지운다거나, 영상 없이 소리만 재생되게 하거나, 앱이 포그라운드로 실행되지 않을 때에도 재생되게 하는 식이다. 유투브는 제한 된 형태로만 영상을 제공하고 있다.
- 유튜브 동영상의 퀄리티에 대해서는 이 글을 참고하자. 경험상 최근 영상들은 대부분 최고 퀄리티로 업로드 되는 듯 하다.
참조
- https://developers.google.com/youtube/
- https://developers.google.com/youtube/iframe_api_reference
- https://developers.google.com/youtube/android/player/?hl=ko
- https://sunphiz.me/wp/archives/2293
- https://support.google.com/youtube/answer/171780?hl=ko
- https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubeIntents?hl=ko
- https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/package-summary?hl=ko