2014-01-20 4 views
0

동영상을 녹화하는 Android 앱을 개발 중이며 YouTube Data API v3을 사용하여 YouTube에 직접 업로드 할 수 있습니다. 코드는에 설명 된 것과 유사하다 : 파일이 매우 큰 경우,YouTube API 3 동영상 업로드 - 잘못된 자격증 명 - Android

YouTube API 3 Upload Video - Access not configured - Android

성공적하지만, 대부분의 경우 YouTube에 파일을 업로드 (~ 영상의 시간 데이터의 몇 GB) 업로드가 실패합니다. 업로드가 4GB 파일의 절반에 도달하면 다음 메시지가 나타납니다.

성공한 코드와 실패한 코드는 변경되지 않습니다. 신임장은 동일합니다. 업로드가 실패하기 전에 약 1 시간 동안 작동합니다.

기타 잠재적으로 유용한 정보는 안드로이드 스택 트레이스에서 발견된다 :에 해당

W/GLSUser(1794): [amz][amz] Permission for com.package.name to access oauth2: https://www.googleapis.com/auth/youtube.upload will be managed remotely. 
W/qdhwcomposer(318): Excessive delay reading vsync: took 1182 ms 
W/HttpTransport(8543): exception thrown while executing request 
W/HttpTransport(8543): java.io.IOException: unexpected end of stream 
W/HttpTransport(8543): at libcore.net.http.FixedLengthOutputStream.close(FixedLengthOutputStream.java:58) 
W/HttpTransport(8543): at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:81) 
W/HttpTransport(8543): at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:964) 
W/HttpTransport(8543): at com.google.api.client.googleapis.media.MediaHttpUploader.executeCurrentRequest(MediaHttpUploader.java:559) 
W/HttpTransport(8543): at com.google.api.client.googleapis.media.MediaHttpUploader.resumableUpload(MediaHttpUploader.java:434) 
W/HttpTransport(8543): at com.google.api.client.googleapis.media.MediaHttpUploader.upload(MediaHttpUploader.java:345) 
W/HttpTransport(8543): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:418) 
W/HttpTransport(8543): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343) 
W/HttpTransport(8543): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460) 
W/HttpTransport(8543): at com.multplx.android.trickbook.uploader.VideoUploadAsyncTask.doInBackground(VideoUploadAsyncTask.java:133) 
W/HttpTransport(8543): at com.multplx.android.trickbook.uploader.VideoUploadAsyncTask.doInBackground(VideoUploadAsyncTask.java:1) 
W/HttpTransport(8543): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
W/HttpTransport(8543): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
W/HttpTransport(8543): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
W/HttpTransport(8543): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
W/HttpTransport(8543): at java.lang.Thread.run(Thread.java:841) 
W/VideoUploadAsyncTask(8543): @ Exception : com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized 

:

업로드가 1 시간 이상을 복용 한 것 같습니다
try { 
    // https://developers.google.com/youtube/v3/docs/videos/insert 
    Insert videoInsert = inserts[0]; 
    uploader = videoInsert.getMediaHttpUploader(); 
    uploader.setProgressListener(progressListener); 
    Video returnedVideo = videoInsert.execute(); 
} catch (IOException ioe) { 
    ... 
} 

답변

0

(이하)이 액세스 토큰이 남아있었습니다.

클라이언트 라이브러리가 만료 토큰을 처리하는 방법에 대해 잘 모르기 때문에 progressListener에서 직접 처리하는 것이 좋습니다.