首页 >> js开发 >> jsvue+node 实现视频在线播放的实例代码js大全
jsvue+node 实现视频在线播放的实例代码js大全
发布时间: 2021年1月13日 | 浏览:
| 分类:js开发
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', // 建议浏览器在
//获取参数
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"
>
data() {
return {
// 视频播放
playerOptions: {
playbackRates: [0.5, 1.0, 1.5, 2.0], //播放速度
autoplay: false, //如果true,浏览器准备好时开始回放。
muted: false, // 默认情况下将会消除任何音频。
loop: false, // 导致视频一结束就重新开始。
preload: 'auto', // 建议浏览器在