捕获缩略图Whilte下载Youtubevideo

我想在特定时间线上捕捉Youtubevideo的缩略图。 (例如3.2秒)我用ytdl和fluent-ffmpeg和node.js来实现它。 下载完成后可以捕获缩略图。

var fs = require('fs'); var ytdl = require('ytdl'); var ffmpeg = require('fluent-ffmpeg'); var videostream = fs.createWriteStream('video.flv'); var myytdl = ytdl('http://www.youtube.com/watch?v=A02s8omM_hI'); myytdl.pipe(videostream); videostream.on('close',function() { console.log('Downloading complete...'); var proc = new ffmpeg({ source: 'video.flv', nolog: true }) .withSize('150x100') .takeScreenshots(1, '/home/test', function(err) { console.log(err || 'Screenshots were saved'); }); }); 

但是,我无法实现在下载时捕获缩略图。 我想要做的基本想法如下。

  1. 从X秒开始下载Youtubevideo。 (工程)
  2. 将其pipe理为可读/可写(双工)内存stream(需要通知)
  3. 在下载过程中,检查stream是否有足够的数据来捕获第一帧(X秒)。 (需要build议)
  4. 捕获第一帧,然后停止下载

对于2,我已经意识到node.js将在v0.9.x上有双工stream,但是它似乎不能正常工作。 任何人有好主意实施子弹2,3?