实现 node.js 脚本以将媒体播放器添加到 Kodi Web 界面

如何解决实现 node.js 脚本以将媒体播放器添加到 Kodi Web 界面

我正在尝试回答一个与此处略有不同的问题: How to stream video to browser with Kodi

stackoverflow 用户 @YRabl 未投票的答案,标题为“修改了 Chorus 网络界面以允许在后台使用 nodejs 进程进行流式传输。”给出了完整的脚本以及现有界面所需的模组。

但是我不知道如何将 .js 脚本插入到打开本地 URL 的过程中,当我尝试简单地运行脚本本身时,它会引发以下错误

app.listen(<8080>,function () {
       ^
SyntaxError: Unexpected token <
at Module._compile (internal/modules/cjs/loader.js:723:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJscore (internal/bootstrap/node.js:623:3)

我对 node.js 的经验绝对为零。有人可以帮我破译我所看到的以及如何正确实施此解决方案吗?原来的线程已经超过 4 年了,不太可能复活。 任何帮助表示赞赏。提前通知

为简单起见,这里是原始 .js 脚本:

const express = require('express')
const fs = require('fs')
const path = require('path')
const app = express()
const url = require('url')
const gracefulFs = require('graceful-fs')
gracefulFs.gracefulify(fs)

app.get('/video',function(req,res) {
  var q = url.parse(req.url,true).query;
  var filepath = q.src;
  fs.stat(filepath,function(err,stats){
    if (err){
        if (err.code === 'ENOENT'){
            //404 Error if file not found
            res.writeHead(404,{
                "Accept-Ranges" : "bytes","Content-Range" : "bytes " + start + "-" + end + "/" + total,"Content-Length" : chunksize,"Content-Type" : "video/mp4"
            });
        }
        res.end(err);
    }
    
    var start;
    var end;
    var chunksize;
    var total = stats.size;
    
    var range = req.headers.range;
    if (range) {
        var parts = range.replace(/bytes=/,"").split("-");
        start = parseInt(parts[0],10);
        end = parts[1] ? parseInt(parts[1],10) : total - 1;
    } else {
        start = 0;
        end = total - 1;
    }
    
    if (start > end || start < 0 || end > total - 1){
        //error 416 is "Range Not Satisfiable"
        res.writeHead(416,{
            "Accept-Ranges" : "bytes","Content-Range" : "*/" + stats.size,"Content-Type" : "video/mp4"
        });
        res.end();
        return;
    }
    
    if (start == 0 && end == (total -1)){
        res.writeHead(200,{
            'Accept-Ranges': 'bytes','Content-Range': `bytes ${start}-${end}/${total}`,'Content-Length': total,'Content-Type': 'video/mp4'
        });
    } else {
        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(filepath,{
        start : start,end : end
    }).on("open",function() {
        stream.pipe(res);
    }).on("error",function(err) {
        console.log(err);
        res.end(err);
    });
  });
});

app.listen(<port>,function () {
  console.log('Listening on port <port>!');
});

解决方法

您得到的错误是因为您没有用代码的最后三行中的实际端口替换 <port> 占位符。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?