최초 작성일 : 2011/09/19 09:39
현재 진행 중인 프로젝트에서 디바이스의 Data Throughput 확인을 위한 내용 중
1. 아이폰에서 YouTube 동영상을 플레이하는 방법
1) YouTube API를 이용
문제점 : 유튜브의 API를 이용하는 경우 동영상을 플레이할 때 아이폰에 기본 포함된 유튜브 앱을
실행시키게 됨으로써 Data Throughput App을 벗어나 앱 제어가 불가능해짐
2) YouTube 동영상의 URL을 포함하는 Html 태그를 UIWebView에 로드시켜 실행
문제점 : HTML 태그를 웹뷰에서 로드시키면 지정한 크기의 썸네일과 버튼이 화면상에
표시되고 이 버튼을 터치하면 동영상이 플레이됨.
이 때 로드되는 플레이어는 아이폰 API에서 제공되는 플레이어이긴 하나 개발자가
그 인스턴스를 생성하여 띄운 것이 아니라 아이폰에 기본 내장된 YouTube의 사파리 브라우저용
유튜브 플러그인이 실행을 시킨 것으로써 개발자가 그 상태의 변화를 통보(Notification)받을 수 없어
플레이어가 시작되는 시점(엄밀하게 말해 버튼이 터치되는 시점)은 확인 가능하나 그 이후의
플레이어 상태는 확인이 불가능함.
2. 아이폰 API에서 제공하는 기본 내장 플레이어(MPMediaPlayerController)를 이용할 수 없는 이유.
아이폰에서 기본 제공하는 플레이어인 MPMediaPlayerController는 인자로 플레이할 동영상의 직접적인 경로를
인자로 취함 (예. http://www.video.com/samplevideo/sample.mp4와 같이 최종적으로 파일 명이 나와야 함)
그러나 현재 유튜브에 접근할 수 있는 URL은 모두 유튜브의 스트리밍 서버가 사용자의 접속 이후 다양한 내용을
처리할 수 있도록 redirect되거나 또는 스크립트 처리되는 URL뿐임. 따라서 유튜브의 URL로는 플레이 자체가 안됨.
유튜브 URL의 실례
일반적인 URL : http://www.youtube.com/watch?v=cOajdkHe8f8&feature=feedrec_grec_index
동영상을 다운로드 가능하게 해주는 URL : http://o-o.preferred.nrt19s03.v14.lscache2.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Coc%3AU0hQS1FTTl9FSkNOMF9JTVJF&fexp=900811%2C904431&itag=18&ip=0.0.0.0&signature=030D5EAF228F87AC2F4872585346370D14F3CAB2.1C9A9B4051A6064A9CFF47CA2A19D07B5776CEDC&sver=3&ratebypass=yes&expire=1316180400&key=yt1&ipbits=0&id=70e6a37641def1ff&title=iPad%20iOS%204.3%20-%20New%20Multitouch%20Gestures
3. RTSP를 사용할 수 없는 이유
우선 아이폰 API 문서에 명확하게 RTSP를 지원하지 않는다고 언급하고 있음
언급된 문서 URL :https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/FrequentlyAskedQuestions/FrequentlyAskedQuestions.html#//apple_ref/doc/uid/TP40008332-CH103-SW1
내용 :
What advantages does this approach have over RTP/RTSP?
HTTP is less likely to be disallowed by routers, NAT, or firewall settings. No ports need to be opened that are commonly closed by default. Content is therefore more likely to get through to the client in more locations and without special settings. HTTP is also supported by more content-distribution networks, which can affect cost in large distribution models. In general, more available hardware and software works unmodified and as intended with HTTP than with RTP/RTSP. Expertise in customizing HTTP content delivery using tools such as PHP is also more widespread.
Also, HTTP Live Streaming is supported in Safari and the media player framework on iOS.RTSP streaming is not supported.
또한 RTSP를 취할 수 있는 유튜브 API URL을 통해 XML 데이터까지는 받아올 수 있으나 해당 XML 내에도 MPMediaPlayerController에서 사용 가능한
URL은 제공되지 않음
RTSP를 사용하기 위해 유튜브 API URL을 통해 가져온 XML 데이터의 일부
<media:group>
<media:category label='과학기술' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>Tech</media:category>
<media:content url='http://www.youtube.com/v/hNqGdLQXIWc?f=videos&app=youtube_gdata' type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full' duration='595' yt:format='5'/>
<media:content url='rtsp://v1.cache4.c.youtube.com/CiILENy73wIaGQlnIRe0dIbahBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='595' yt:format='1'/>
<media:content url='rtsp://v8.cache6.c.youtube.com/CiILENy73wIaGQlnIRe0dIbahBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='595' yt:format='6'/>
<media:description type='plain'>This is the movie that is introducing my iPhone application 'Day Recorder Pro'.</media:description>
<media:keywords>iPhone, App, application, GPS, dashboard</media:keywords>
<media:player url='http://www.youtube.com/watch?v=hNqGdLQXIWc&feature=youtube_gdata_player'/>
<media:thumbnail url='http://i.ytimg.com/vi/hNqGdLQXIWc/0.jpg' height='360' width='480' time='00:04:57.500'/>
<media:thumbnail url='http://i.ytimg.com/vi/hNqGdLQXIWc/1.jpg' height='90' width='120' time='00:02:28.750'/>
<media:thumbnail url='http://i.ytimg.com/vi/hNqGdLQXIWc/2.jpg' height='90' width='120' time='00:04:57.500'/>
<media:thumbnail url='http://i.ytimg.com/vi/hNqGdLQXIWc/3.jpg' height='90' width='120' time='00:07:26.250'/>
<media:title type='plain'>Day Recorder Pro Introducing</media:title>
<yt:duration seconds='595'/>
</media:group>
이상의 이유로 아이폰에서 YouTube 동영상 스트리밍 성능을 테스트하는 것은 사실상 불가능할 것으로 판단됨
4. 대체 방안
테스트의 주 목적이 유튜브에 대한 성능 테스트가 아닌 디바이스간의 비교 분석에 있으므로
동일한 환경만 갖추어지면 테스트는 가능할 것으로 생각됨
일반 웹서버에서 동영상 파일의 직접적인 경로가 제공되도록 환경을 구성하여 테스를 진행하는 것은
가능하다고 생각됨
이상입니다.
'Development > iPhone' 카테고리의 다른 글
[옛 글] 가장 단순한 것이 가장 확실한 것이다! (0) | 2013.07.19 |
---|---|
[옛 글] [라이브러리] MailCore 라이브러리 및 자작 메일 파서 그리고 질문... (0) | 2013.07.19 |
[옛 글] [iOS] 프로젝트에 프로젝트 삽입 - 2 : 프레임워크 추가하기 (0) | 2013.07.19 |
[옛 글] [iOS] 프로젝트에 프로젝트 삽입 (0) | 2013.07.19 |
[옛 글] [iOS] 수행 시간 체크 코드 (0) | 2013.07.19 |