下载Youtube视频时捕获缩略图

时间:2012-12-31 08:52:34

标签: node.js stream ffmpeg video-streaming video-capture

我想在特定时间线上捕捉Youtube视频的缩略图。 (例如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秒开始下载Youtube视频。 (工程)
  2. 将其传输到可读/可写(双工)内存流(需要建议)
  3. 在下载过程中,检查流是否有足够的数据来捕获第一帧,即X秒。 (需要建议)
  4. 捕获第一帧,然后停止下载
  5. 对于2,我已经意识到node.js将在v0.9.x上出现Duplex Stream,但它似乎无法正常工作。谁有好主意实施子弹2,3?

0 个答案:

没有答案