안드로이드 앱과 유투브 연결하기

안드로이드 앱에 동영상을 넣고 싶을 때, 보통 유투브를 가장 먼저 떠올린다.  유투브를 내 어플리케이션에 연결하는 대표적인 방법은 아래와 같다.

구현 방법에 대한 좋은 글들이 인터넷에 많이 있으므로, 여기서는 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를 써보자.
  • 유투브를 비디오 스트리밍 프로바이더처럼 쓰기는 매우 어렵다. 예를 들어, 유투브 로고를 지운다거나,  영상 없이 소리만 재생되게 하거나, 앱이 포그라운드로 실행되지 않을 때에도 재생되게 하는 식이다. 유투브는 제한 된 형태로만 영상을 제공하고 있다.
  • 유튜브 동영상의 퀄리티에 대해서는 이 글을 참고하자. 경험상 최근 영상들은 대부분 최고 퀄리티로 업로드 되는 듯 하다.

참조

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.