我有一台服务器和一些Android设备,都连接到同一个wifi。如何在不访问互联网的情况下从服务器播放视频文件? 我尝试使用VideoView,但我只能加载网址,所以我使用了ngrok,但随后它进入了互联网......
答案 0 :(得分:0)
如果它是局域网上本地服务器上的静态托管视频,并且您拥有访问该视频的URL,那么您应该只需将URL输入到客户端计算机上的浏览器中。
您确实需要确保视频是计算机和浏览器支持的视频 - 使用一些常用视频进行测试将是一个良好的开端。传统的“Big Buck Bunny”视频采用mp4格式,下载测试时效果很好:
如果您查看该页面的来源,例如,您将看到mp4视频的直接URL,您可以直接在浏览器中测试所需的URL。
如果服务器可以为静态视频文件提供服务,则本地网络也应如此。请注意,值得检查您的服务器也支持范围请求 - 这允许按块请求文件块,因此可以尽快开始播放,而不必等待整个文件下载。大多数服务器都支持此功能,但您可能必须在配置中启用它。
在网络服务器上提供静态视频文件
视频文件可以仅视为网络资源,与文档,文件图像的方式相同。请注意,这不是通过互联网提供视频的最有效方式,这就是为什么有专门的流媒体服务器,但如果您只需要一个简单的解决方案,它就会起作用。
Difefrent Web服务器有不同的方法来提供静态内容,因此您需要检查您正在使用的服务器,但作为node.js服务器的示例,以下代码将提供任何简单放置在'videos'目录:
var express = require('express');
var fs = require('fs');
var morgan = require('morgan');
//Define the app
var app = express();
// create a write stream (in append mode)
var accessLogStream = fs.createWriteStream(__dirname + '/access.log', {flags: 'a'});
// setup the logger
app.use(morgan('combined', {stream: accessLogStream}));
// Constants
var PORT = 3000;
//Use static middleware to serve static content - using absolute paths here (you may want something different)
app.use('/videos', express.static('/videos'));
//Add error handling
app.use(function(err, req, res, next) {
console.log("error!!!");
console.log(err.stack);
});
// Video Server test page
app.get('/', function (req, res) {
console.log("In Get!!!");
res.send('Hello world from Video server\n');
});
//Start web server
var server = app.listen(PORT, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
视频的网址为:http://[your服务器网址] /视频/ [视频文件名称]