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