Youtube以编程方式上传视频

时间:2014-05-26 19:54:32

标签: android youtube youtube-api android-youtube-api youtube-data-api

我已经过了4天试图上传到youtube视频,但我失败了请帮帮我。

package com.example.testyoutube;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

import com.google.gdata.client.youtube.YouTubeService;
import com.google.gdata.data.media.MediaFileSource;
import com.google.gdata.data.media.mediarss.MediaCategory;
import com.google.gdata.data.media.mediarss.MediaDescription;
import com.google.gdata.data.media.mediarss.MediaKeywords;
import com.google.gdata.data.media.mediarss.MediaTitle;
import com.google.gdata.data.youtube.VideoEntry;
import com.google.gdata.data.youtube.YouTubeMediaGroup;
import com.google.gdata.data.youtube.YouTubeNamespace;
import com.google.gdata.util.AuthenticationException;
import com.google.gdata.util.ServiceException;

public class MainActivity extends Activity {

private Button button;
private YouTubeService service;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            submitVideo("/storage/emulated/0/Pictures/Hello Camera/VID_20140523_204750.mp4",
                    "i have done it ", "Yooooooooo , it works", "fun");

        }
    });
}

public void submitVideo(String vName, String vTitle, String vDesc, String vCate) {
    String developer_key = "api key"; // Registered developer key
    String clientID = "gmailaccount"; // Server's Youtube account
    String password = "passwordofgmailaccount"; // Server's Youtube password
    service = new YouTubeService(clientID, developer_key); // YouTube Object, we take action by this.
    try {
        service.setUserCredentials(clientID,password);
    } catch (AuthenticationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    File videoFile = new File( vName ); // The video local file prepare to upload
    String VIDEO_UPLOAD_FEED = "http://uploads.gdata.youtube.com/feeds/api/users/default/uploads";
    String mediaType = "video/*"; // Serach .flv MIME type may found more
    String vKey1 = vCate; // Use same category and keyword

    VideoEntry newEntry = new VideoEntry(); // YouTube video object type, they will return this after uploaded
    YouTubeMediaGroup mg = newEntry.getOrCreateMediaGroup(); // Collect all of the video information
    mg.addCategory(new MediaCategory(YouTubeNamespace.CATEGORY_SCHEME, vCate));
    mg.setTitle(new MediaTitle());
    mg.getTitle().setPlainTextContent(vTitle);
    mg.setDescription(new MediaDescription());
    mg.getDescription().setPlainTextContent(vDesc);
    mg.setKeywords(new MediaKeywords());
    mg.getKeywords().addKeyword(vKey1);

    MediaFileSource ms = new MediaFileSource(videoFile, mediaType);
    newEntry.setMediaSource(ms);
    VideoEntry ve = null;
    try {
        ve = service.insert(new URL(VIDEO_UPLOAD_FEED), newEntry);
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ServiceException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    if(ve == null){
        System.out.println("Submit to youtube fail.");
        return ;
    }
}
}

它说这个“service = new YouTubeService(clientID,developer_key);”有错误,但它没有解释原因,请帮助(或建议另一个代码)

1 个答案:

答案 0 :(得分:0)

你可以使用Intent

来做到这一点
ContentValues content = new ContentValues(4);
content.put(Video.VideoColumns.DATE_ADDED,
System.currentTimeMillis() / 1000);
content.put(Video.Media.MIME_TYPE, "video/mp4");
content.put(MediaStore.Video.Media.DATA, "video_path");
ContentResolver resolver = getBaseContext().getContentResolver();
Uri uri = resolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, content);

Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Title");
sharingIntent.putExtra(android.content.Intent.EXTRA_STREAM,uri);
startActivity(Intent.createChooser(sharingIntent,"share:"));