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] 이 최선의 방법이다.






저작자 표시 비영리 변경 금지
신고
Posted by DoDo4989

댓글을 달아 주세요

  1. 2011.05.27 17:48 신고

    안녕하세요.
    VideoView에 Youtube 동영상을 플레이하는 방법을 검색하다가 방문하게 되었습니다.
    혹시 VideoView로 플레이를 해보셨나요?
    저는 애러만나서... 어떻게 했는지 소스코드를 공유해주실 수 있나요?
    댓글 또는 메일 부탁드립니다.

    • 2011.05.31 10:22 신고

      아...6) 항목을 해보실려는군요^^ 소스는....지웠네요.(죄송--;;)

      어떤 부분에서 에러가 나는건지 몰라서...걍 다 설명해드려볼게요.

      rtsp주소 가져오는건 3) 항목에서 보시다시피 "content"값을 읽어오시면 url 읽어 오실수 있고요.

      읽은값을 VideoView의 url로 넣어주시면 되요.

      VideoView사용법은 검색해보시면 쉽게 찾으실꺼에요.



      모바일용으로 제공되는 동영상이라서 화질이 안좋았습니다.

      또한 재생할수없는 동영상도 있었고요. (흠..이부분은 단말마다 다를 수도 있겠네요. 참고로 옵티머스원에서는 재생 안되는 동영상이 더 많았습니다.)


      시원하게 도움을 드리지 못한것 같아 죄송합니다...건승하세요^^

  2. 2011.06.20 19:38 신고

    아..혹시 VideoView로 테스트한것은 단말을 통해서 하신건가요??
    애뮬레이터로는 안해보셨나요?

    • 2011.06.21 09:21 신고

      네. 저는 단말을 통해 테스트를 했었습니다.

      위에 말씀드린대로 단말마다 지원되는 동영상이 다른줄 알고 있습니다.

      따라서 에뮬과 단말과도 차이가...있겠죠?ㅋ