2010-11-06 38 views
3

我試圖在UIWebView中播放YouTube視頻,而不是離開我的應用程序。通過編號爲單個視頻加載YouTube GData Feed

谷歌認爲是容易peasy- http://apiblog.youtube.com/2009/02/youtube-apis-iphone-cool-mobile-apps.html

所以我有框架的GData和標題很好的工作,我有沒有問題做查詢,加載用戶的視頻輸入等

但我不能似乎要加載特定視頻的Feed。 我知道我想提前預覽的視頻的ID號爲。我如何加載特定視頻的Feed?

我然後將效仿谷歌的指示:

Grab the video url from the media tag in the API response with the application/x-shockwave-flash type. 

,然後將其嵌入像這樣:

// webView is a UIWebView, either initialized programmatically or loaded as part of a xib. 

NSString *htmlString = @"<html><head> 
<meta name = \"viewport\" content = \"initial-scale = 1.0, user-scalable = no, width = 212\"/></head> 
<body style=\"background:#F00;margin-top:0px;margin-left:0px\"> 
<div><object width=\"212\" height=\"172\"> 
<param name=\"movie\" value=\"http://www.youtube.com/v/oHg5SJYRHA0&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\"></param> 
<param name=\"wmode\" value=\"transparent\"></param> 
<embed src=\"http://www.youtube.com/v/oHg5SJYRHA0&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\" 
type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"212\" height=\"172\"></embed> 
</object></div></body></html>"; 

[webView loadHTMLString:htmlString baseURL:[NSURL URLWithString:@"http://www.your-url.com"]]; 

任何幫助,將不勝感激!

回答

6

鑑於YouTube視頻的條目的飼料,你可以得到的ID和Flash網址,每個條目是這樣的:

for (GDataEntryYouTubeVideo *videoEntry in [feed entries]) { 
    GDataYouTubeMediaGroup *mediaGroup = [videoEntry mediaGroup]; 
    NSString *videoID = [mediaGroup videoID]; 

    NSArray *mediaContents = [mediaGroup mediaContents]; 
    GDataMediaContent *flashContent = 
    [GDataUtilities firstObjectFromArray:mediaContents 
           withValue:@"application/x-shockwave-flash" 
           forKeyPath:@"type"]; 

    NSLog(@"video ID = %@, flash content URL = %@", 
     videoID, [flashContent URLString]); 
} 
+0

這很有道理,但我該如何獲得該飼料?我不是在尋找所有用戶的視頻,或播放列表的視頻,或上傳或任何...我正在尋找一個特定的視頻飼料。 – averydev 2010-11-07 22:33:30

+0

@grobbins不知道我丟失了什麼,但我得到 - [GDataEntryBase mediaGroup]:無法識別的選擇器發送到實例。使用您提供的確切代碼和videoEntry在調試器中顯示的仍然是GDataEntryBase類型(即使是上面的GDataEntryYouTubeVideo)。嘗試調用mediaGroup的第二行發生崩潰。有任何想法嗎? – kdbdallas 2012-01-03 06:42:14

2

在完全相同的情況正好找到了答案。通常情況下,許多大型API的常見使用說明在解釋更高級別的東西時會丟失 - 可能會令人沮喪。幸運的是,信息是有...

http://code.google.com/apis/youtube/2.0/developers_guide_protocol_video_entries.html

所以,我們應該能夠返回ATOM源插入的GData庫,並把它解析出使用正確的內容URL在「UIWebView的」風格的球員代碼。

...格羅賓斯,下次正確閱讀問題!

相關問題