Notice
Recent Posts
Recent Comments
Link
관리 메뉴

설.현.아빠

YouTube 동영상 ListView로 출력하고 플레이하기. 본문

안드로이드/List

YouTube 동영상 ListView로 출력하고 플레이하기.

설.현.아빠 2011. 5. 4. 14:58




YouTube에 검색 키워드를 보내서 결과를 받아 파싱 후 ListView에 출력하는 부분은 별 문제 없이 구현되었다.


하지만 해당 리스트의 아이템을 클릭했을 경우 동영상이 출력되는데에는 다양한 문제들이 발생하였다.



1. 제일 당황스러운 문제는 유튜브 동영상 검색에 있었다. 내가 올린 동영상은 검색해도 결과가 나오

지 않았다...


   결론부터 말하자면 지원하는않는 국가라는거? 동영상 업로드시 Country가 한국으로 설정되어 있으면 업로드 자체가 제한된다.


   이 문제의 해결책은 유튜브 하단의 위치항목을 전세계로 바꾸고 업로드를 하면 가능하다. (집에서 확인해봐야함.검색되는지 확인 못함.)




2. 두번째 문제는 지원되지 않는 동영상 포맷이 있다. XML 파싱시 player항목을 읽으면 아래와 같은

 주소값을 읽어올 수 있다.


    http://www.youtube.com/watch?v=OmJYbdRfDNQ&feature=youtube_gdata_player



 

1) http://www.youtube.com/watch?v=OmJYbdRfDNQ&feature=youtube_gdata_player 주소값으로 출력해 보았다.

   소스 1]



  좋은점 : 바로 유튜브 플레이어가 출력됨. 가로 세로 모두 지원함.

  안좋은점 : 출력안되는 동영상이 있음.



    하지만 이 주소를 가지고 WebView를 통해 Play를 시키면 "This video is not available on mobile " 이라는 문구가 뜨면서 출력되지 않는


    동영상이 있다. 이는 모바일에서 지원하지 않는 동영상 포맷이라 출력이 안되는 것으로 파악된다.


    물론 정상적으로 출력되는 동영상들도 있다.

 

2) 모바일용 유튜브 페이지는 m.youtube.com이다. 따라서 위의 주소값을 아래와 같이 변경해 보았다.


   소스 2]



    퍽! 에러 맞았다.  문제는 intent.setPackage("com.google.android.youtube"); 이 문제였다.


    구글에서 유튜브의 동영상 플레이어를 지원해 주는데 이 플레이어를 연결해 주기위해 Package설정을 해주는듯(?)한다...


    이 플레이어는 http://m.youtube.com/watch?v=OmJYbdRfDNQ&feature=youtube_gdata_player 라는 주소로 동영상 플레이가 


    불가능한가보다.



Error Log

05-04 14:56:16.115: ERROR/AndroidRuntime(4813): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=http://m.youtube.com/watch?v=wKsoXHYICqU&feature=youtube_gdata_player flg=0x10000000 pkg=com.google.android.youtube }


  

    그래서 Package를 주석처리 후 재 실행 해보니...출력된다. 


  좋은점 : 가로 세로 모두 지원함.

  안좋은점 : 출력안되는 동영상이 있음. 중간에 Broswer가 한번 더 출력되고 다시 Play 버튼을 눌러야 함.



 

3) 유투브 동영상의 모바일 재생을 위한 주소가 별도로 제공된다. rtsp....rtsp....rtsp...rtsp 스트리밍에 대해선 별도 검색^^


    rtsp주소를 읽어오기 위해서는 content항목으로 파싱.


   소스 3]



  좋은점 : 바로 유튜브 플레이어가 출력됨.

  안좋은점 : 가로보기 모드밖에 지원 안됨. 화질이 구림--;; 비추...출력안되는 동영상이 있음.

            rtsp는 모바일 지원 동영상이라서 화질이 구린 것 같다.



 

4) replace("watch?v=","v/"));

     이건....먼지 잘 모르겠다. 여기저기 찾다가 발견한건데....   소스 1] 과 똑같은 결과다.



 

5) 별도의 WebView Activity를 생성하여 출력하는 방법

     http://www.youtube.com/watch?v=OmJYbdRfDNQ&feature=youtube_gdata_player  URL을 넘겨받아 출력하면 아무런 화면이 안뜬다.--;;


     http://m.youtube.com/watch?v=OmJYbdRfDNQ&feature=youtube_gdata_player  URL을 넘겨받아 불러오면


          "Redirecting to page. Please wait." 가 출력된후 플레이버튼을 별도로 눌러야 영상이 출력된다.


          여기서 중요한 것이 있다면 WebView에 UserAgent를 아래와 같이 변경해줘야한다.


          Android 2.1에서 정상적으로 출력되던 동영상이 2.2로 변경되면서 출력안되는 문제가 있다는 제보가 있어서


          검색하여 찾아낸 방법이다.


          소스 4]




 

6) 별도의 Activity에서 VideoView를 이용한 출력


이것도 비추다...ㅠㅠ 아무래도 rtsp 지원이라 화질이 떨어진다...


http://www.youtube.com/watch?v=OmJYbdRfDNQ&feature=youtube_gdata_player  URL을 넘겨받아 출력하면 "Sorry, this video cannot be played." 


에러창을 볼 수 있다^^


궁금하면 함 해보시던가...




    

현재까지의 결과를 보면 소스 1] 이 최선의 방법이다.






Comments