1.node服务端1.node服务端1.node服务端数据流传输,可在线缓存
//获取参数

var params=urldeal.parse(req.url,true).query

const ROOT_PATH = process.cwd();//必须使用绝对路径,使用相对路径会直接下载文件

let path =ROOT_PATH+params.url;


let stat = fs.statSync(path); //获取文件信息

let fileSize = stat.size;

let range = req.headers.range;


if (range) {

//有range头才使用206状态码


let parts = range.replace(/bytes=/, "").split("-");

let start = parseInt(parts[0], 10);

let end = parts[1] ? parseInt(parts[1], 10) : start + 9999999;


// end 在最后取值为 fileSize - 1

end = end > fileSize - 1 ? fileSize - 1 : end;


let chunksize = (end - start) + 1;

let file = fs.createReadStream(path, { start, end });

let head = {

'Content-Range': `bytes ${start}-${end}/${fileSize}`,

'Accept-Ranges': 'bytes',

'Content-Length': chunksize,

'Content-Type': 'video/mp4',

};

res.writeHead(206, head);

file.pipe(res);
//Node中的Server端HTTP response是Writable流

} else {

let head = {

'Content-Length': fileSize,

'Content-Type': 'video/mp4',

};

res.writeHead(200, head);

fs.createReadStream(path).pipe(res);

}
//获取参数

var params=urldeal.parse(req.url,true).query

const ROOT_PATH = process.cwd();//必须使用绝对路径,使用相对路径会直接下载文件

let path =ROOT_PATH+params.url;


let stat = fs.statSync(path); //获取文件信息

let fileSize = stat.size;

let range = req.headers.range;


if (range) {

//有range头才使用206状态码


let parts = range.replace(/bytes=/, "").split("-");

let start = parseInt(parts[0], 10);

let end = parts[1] ? parseInt(parts[1], 10) : start + 9999999;


// end 在最后取值为 fileSize - 1

end = end > fileSize - 1 ? fileSize - 1 : end;


let chunksize = (end - start) + 1;

let file = fs.createReadStream(path, { start, end });

let head = {

'Content-Range': `bytes ${start}-${end}/${fileSize}`,

'Accept-Ranges': 'bytes',

'Content-Length': chunksize,

'Content-Type': 'video/mp4',

};

res.writeHead(206, head);

file.pipe(res);
//Node中的Server端HTTP response是Writable流

} else {

let head = {

'Content-Length': fileSize,

'Content-Type': 'video/mp4',

};

res.writeHead(200, head);

fs.createReadStream(path).pipe(res);

}2.vue客户端2.vue客户端2.vue客户端1.安装video-player插件
cnpm install vue-video-player --save
cnpm install vue-video-player --save2.组件中引用

ref="videoPlayer"

:playsinline="true"

:options="playerOptions"
>


ref="videoPlayer"

:playsinline="true"

:options="playerOptions"
>
3.调用的data中的数据
data() {

return {

// 视频播放

playerOptions: {

playbackRates: [0.5, 1.0, 1.5, 2.0], //播放速度

autoplay: false, //如果true,浏览器准备好时开始回放。

muted: false, // 默认情况下将会消除任何音频。

loop: false, // 导致视频一结束就重新开始。

preload: 'auto', // 建议浏览器在