diff --git a/main/lib/torrent-poster.js b/main/lib/torrent-poster.js index 6eb0b0d3..e10cf8aa 100644 --- a/main/lib/torrent-poster.js +++ b/main/lib/torrent-poster.js @@ -3,23 +3,43 @@ module.exports = torrentPoster var captureVideoFrame = require('./capture-video-frame') function torrentPoster (torrent, cb) { - if (torrent.ready) onReady() - else torrent.once('ready', onReady) + // use largest file + var index = torrent.files.indexOf(torrent.files.reduce(function (a, b) { + return a.length > b.length ? a : b + })) - function onReady () { - // use largest file - var file = torrent.files.reduce(function (a, b) { - return a.length > b.length ? a : b - }) + var server = torrent.createServer(0) + server.listen(0, onListening) + + function onListening () { + var port = server.address().port + var url = 'http://localhost:' + port + '/' + index var video = document.createElement('video') - file.renderTo(video) + video.addEventListener('canplay', onCanPlay) - video.currentTime = 10 - video.addEventListener('seeked', onSeeked) + video.volume = 0 + video.src = url + video.play() - function onSeeked (e) { + function onCanPlay () { + video.removeEventListener('canplay', onCanPlay) + video.addEventListener('seeked', onSeeked) + + video.currentTime = Math.min((video.duration || 600) * 0.03, 60) + } + + function onSeeked () { video.removeEventListener('seeked', onSeeked) + var buf = captureVideoFrame(video) + + // unload video element + video.pause() + video.src = '' + video.load() + + server.destroy() + cb(null, buf) } }