用Webtorrentstream式传输MP4

我正在运行一个节点服务器,我想从使用WebTorrent( https://webtorrent.io/docs )的磁链接streamvideo。 当我运行这个,看起来好像文件没有被正确的引用,即使我已经设置了一个variables作为.mp4文件。

为了清楚起见,我在这个例子中添加了一个给定的torrentID(磁铁链接),以消除我可能使用express和URL的任何问题。 这个磁力链接导致以MP4格式下载音乐video。

video播放器正在显示,但没有播放video。 我假设这意味着我不想访问正确的文件。 如果您需要了解更多关于WebTorrent的信息,请访问https://webtorrent.io/docs

var fs = require("fs"), http = require("http"), url = require("url"), path = require("path"), request = require('request'), host = '127.0.0.1', port = 3000, express = require("express"), app = express(), server = http.createServer(app), WebTorrent = require('webtorrent'), client = new WebTorrent(); app.get('/streamvid/:magLink', function(req, res){ //var torrentID = req.params.magLink; var torrentID = 'magnet:?xt=urn:btih:84123E8B4E850A796403736E0CF02E409F0EF00B'; client.add(torrentID, function (torrent) { var file = torrent.files[0] file.name = 'movie.mp4'; if (req.url != "/movie.mp4") { res.writeHead(200, { "Content-Type": "text/html" }); res.end('<video width="1024" height="768" controls> <source src="movie.mp4" type="video/mp4"> <source src="movie.ogg" type="video/ogg"> Your browser does not support the video tag. </video>'); } else { var range = req.headers.range; var positions = range.replace(/bytes=/, "").split("-"); var start = parseInt(positions[0], 10); fs.stat(file, function(err, stats) { var total = stats.size; var end = positions[1] ? parseInt(positions[1], 10) : total - 1; var chunksize = (end - start) + 1; res.writeHead(206, { "Content-Range": "bytes " + start + "-" + end + "/" + total, "Accept-Ranges": "bytes", "Content-Length": chunksize, "Content-Type": "video/mp4" }); var stream = fs.createReadStream(file, { start: start, end: end }) .on("open", function() { stream.pipe(res); }).on("error", function(err) { res.end(err); }); }); } }) }); var server = http.createServer(app); var server = app.listen(port, host); server.on('error', function(err) { console.log('error:' + err); }); server.on('listening', function(){ console.log('Server is Up and Running'); });