使用一个stream,使用Node.js将video上传到Youtube

我可以轻松地将video更新到Youtube:

var googleapis = require('googleapis'); googleapis.discover('youtube', 'v3').execute(function(err, client) { var metadata = { snippet: { title:'title', description: 'description'}, status: { privacyStatus: 'private' } }; client .youtube.videos.insert({ part: 'snippet,status'}, metadata) .withMedia('video/mp4', fs.readFileSync('user.flv')) .withAuthClient(auth) .execute(function(err, result) { if (err) console.log(err); else console.log(JSON.stringify(result, null, ' ')); }); }); 

问题是对于fs.readFileSync大文件是非常不实际的。

显然这是固定的,但提供的例子是为谷歌驱动器:

 var fs = require('fs'); var drive = google.drive({ version: 'v2', auth: oauth2Client }); drive.files.insert({ resource: { title: 'testimage.png', mimeType: 'image/png' }, media: { mimeType: 'image/png', body: fs.createReadStream('awesome.png') // read streams are awesome! } }, callback); 

如何使用stream上传到Youtube?

在我的情况下,我可以使用这个模块上传大文件(> 2GB)。

 var youtube = require('googleapis').youtube('v3'); youtube.videos.insert({ 'auth': auth, 'resource': resource, 'part': part, 'media': fs.createReadStream(videoFilePath) }, callback);