2

特定のタイムラインでYoutubeビデオのサムネイルをキャプチャしたい。(例:3.2秒)node.jsでytdlとfluent-ffmpegを使用して実装しました。ダウンロード終了時にサムネイルをキャプチャすることができました。

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