0
ビデオを連続して挿入すると、すべてのビデオがプレイリストに挿入されますが、時間がかかります。マルチスレッドを使用すると、ビデオの半分以上が最後に欠落しています。動画を失うことなく複数の動画をすばやく挿入するにはどうすればよいですか?マルチスレッドを使用して複数のビデオをプレイリストに挿入するとビデオが失われる
// Insert videos. 5 videos per asyncTask
List<List<YTVideo>> chunks = Lists.partition(videos, 5);
for (int i = 0; i < chunks.size(); i++) {
videoAndPlaylistContainer container = new videoAndPlaylistContainer();
container.playlistId = playlistId;
List<YTVideo> chunk = chunks.get(i);
container.videos = chunk;
InsertPlayListItemTask insertPlaylistItemsTask = new InsertPlayListItemTask();
runningTasks.add(insertPlaylistItemsTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,container));
}
。
private class InsertPlayListItemTask extends AsyncTask<videoAndPlaylistContainer, Void, Void>{
@Override
protected Void doInBackground(videoAndPlaylistContainer... params) {
videoAndPlaylistContainer container = params[0];
List<YTVideo> videosChunk = container.videos;
String playlistId = container.playlistId;
for (int i = 0; i < videosChunk.size(); i++) {
YTVideo video = videosChunk.get(i);
String videoId = video.getId();
long pos = video.getPosition();
try {
ResourceId resourceId = new ResourceId();
resourceId.setKind("youtube#video");
resourceId.setVideoId(videoId);
PlaylistItemSnippet playlistItemSnippet = new PlaylistItemSnippet();
// playlistItemSnippet.setTitle("First video in the test playlist");
playlistItemSnippet.setPlaylistId(playlistId);
playlistItemSnippet.setResourceId(resourceId);
playlistItemSnippet.setPosition(pos);
PlaylistItem playlistItem = new PlaylistItem();
playlistItem.setSnippet(playlistItemSnippet);
YouTube.PlaylistItems.Insert playlistItemsInsertCommand =
youtube.playlistItems().insert("snippet", playlistItem);
playlistItemsInsertCommand.execute();
System.out.println("Inserted video: " + video);
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
edit:videos.size()〜chunks.size()。 insertedCount ++を削除しました。
あなたは誤りです。私は別のものを試している間にそれを変更することを忘れました。その問題は依然としてその修正で残っています – code511788465541441
私は参照してください。あなたは何のために 'insertedCount'変数を使用していますか? (AFAIKは 'chunks.size()'または '5'の値に達するだけです)。 –
いいえ、それは私が連続して挿入していたときから残されています。 – code511788465541441