2011-10-03 209 views
2

我正在開發一個應用程序,將sdcard中的視頻上傳到youtube,然後返回youtube視頻網址。但是,我一直無法成功地做到這一點。Android視頻上傳到Youtube

我試圖與ACTION_SEND:

public void onUploadClick(View v) { 
Intent uploadIntent = new Intent(Intent.ACTION_SEND); 
// In a real app, video would be captured from camera. 
File f = new File("/sdcard/test.mov"); 
uploadIntent.setDataAndType(Uri.fromFile(f), "video/quicktime"); 
startActivity(Intent.createChooser(uploadIntent, "Upload")); 
} 

但是,奇怪的是,這個實現我沒有讓YouTube爲上傳的選項。我有藍牙,郵件,Dropbox,Facebook,Flickr,Gmail和Handcent。但不是Youtube。對此有何想法? 此外,是否有可能使用此方法上傳後有youtube視頻的網址?怎麼樣?

我也嘗試過使用Youtube API for Java,並且再次沒有成功。我添加了所有需要的庫(gdata-client-1.0.jar,gdata-media-1.0.jar和gdata-youtube-2.0,jar)。但是,當我運行它時,儘管擁有正確的庫和導入,但仍會爲com.google.gdata.client.youtube.YouTubeService獲取NoClassDefFoundError。 這裏是代碼我使用:

YouTubeService service = new YouTubeService(clientID, developer_key); 
VideoEntry newEntry = new VideoEntry(); 

YouTubeMediaGroup mg = newEntry.getOrCreateMediaGroup(); 
mg.setTitle(new MediaTitle()); 
mg.getTitle().setPlainTextContent("My Test Movie"); 
mg.addCategory(new MediaCategory(YouTubeNamespace.CATEGORY_SCHEME, "Autos")); 
mg.setKeywords(new MediaKeywords()); 
mg.getKeywords().addKeyword("cars"); 
mg.getKeywords().addKeyword("funny"); 
mg.setDescription(new MediaDescription()); 
mg.getDescription().setPlainTextContent("My description"); 
mg.setPrivate(false); 
mg.addCategory(new MediaCategory(YouTubeNamespace.DEVELOPER_TAG_SCHEME, "mydevtag")); 
mg.addCategory(new MediaCategory(YouTubeNamespace.DEVELOPER_TAG_SCHEME, "anotherdevtag")); 

newEntry.setGeoCoordinates(new GeoRssWhere(37.0,-122.0)); 
// alternatively, one could specify just a descriptive string 
// newEntry.setLocation("Mountain View, CA"); 

MediaFileSource ms = new MediaFileSource(new File("file.mov"), "video/quicktime"); 
newEntry.setMediaSource(ms); 

String uploadUrl = 
    "http://uploads.gdata.youtube.com/feeds/api/users/default/uploads"; 

VideoEntry createdEntry = service.insert(new URL(uploadUrl), newEntry); 

綜上所述,我的問題是: - 那我在這兩種方法做錯了什麼? - 關於將視頻上傳到YouTube並獲取其YouTube鏈接的簡單目標,您推薦使用哪種方法?即使它不是上述那些。

謝謝。

----更新04/10 ----

  • 與differente電話試圖後,我發現了YouTube不會顯示爲選擇上傳的視頻是我手機的問題(可能是由於ROM)。 但是,即使它使用intent工作也不行,因爲我無法獲取URL並且這很重要。
  • 經過一番研究,似乎第二種方法是不可能的。 Youtube API for Java在Android中不起作用。

這就是說,我正在尋找關於如何在Android上將視頻上傳到Youtube的建議。 我真正想要的是選擇一個視頻文件,將其上傳到Youtube並獲取YouTube網址。最好不受用戶的干擾,只選擇文件,然後上傳和URL檢索在「後臺」中運行。 有什麼建議嗎?什麼是最簡單和最快的方式來實現這一點?

謝謝。

回答

0

關於第一個辦法:我想在3級不同的手機,所有的不同品牌和不同Android版本,這是如何行事的每個當我點擊份額和採摘的YouTube:

行爲= android.intent.action .SEND typ = video/mp4 flg = 0x3000000 cmp = com.google.android.apps.uploader/.clients.youtube.YouTubeSettingsActivity

act = android.intent.action.SEND typ = video/3gpp flg = 0x3000000 cmp = com.google.android.apps.uploader/.clients.youtube.YouTubeSettingsActivity

act = android.intent.action.SEND_MULTIPLE typ = video/* cmp = com.google.android.apps.uploader/.clients.youtube.YouTubeSettingsActivity

所以它看起來像你在正確的軌道上。我會嘗試改變mimetype。從視頻開始/ *也許只是爲了看看它是否有效。

噢,作爲一個附註,它可能看起來很誘人,但如果有一天它會改變它,直接使用YouTubeSettingsActivity可能會很危險。

個人而言,我喜歡第一種方法,因爲它與其他應用程序很好地集成。就像說你的用戶想要使用YouTube以外的東西,他們可以選擇他們想要的東西。雖然我不確定要取回網址。

+0

感謝您的幫助,但我真的需要回URL,所以我猜意圖不會工作。 給用戶上傳應用程序的選擇不是必需的,我希望上傳過程在後臺運行。 – user977568