2

我想在某个时间线上捕捉 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. 捕获第一帧,然后停止下载

对于 2,我已经意识到 node.js 将在即将到来的 v0.9.x 上具有双工流,但它似乎无法正常工作。任何有好主意实施子弹 2,3 的人?

4

0 回答 0