当前位置: 首页 > news >正文

网站设计配色怎么做手机网站用什么制作

网站设计配色怎么做,手机网站用什么制作,环球建筑网校,中国制造网外贸网网站由于业务中有不少视频使用的场景,今天来说说如何使用node完成一个视频推流服务。 先看看效果: 这里的播放的视频是一个多个Partial Content组合起来的,每个Partial Content大小是1M。 一,项目搭建 (1)初…

由于业务中有不少视频使用的场景,今天来说说如何使用node完成一个视频推流服务。

先看看效果:

这里的播放的视频是一个多个Partial Content组合起来的,每个Partial Content大小是1M。

一,项目搭建

(1)初始化项目,创建package.json

npm init

(2)安装express和nodemon

npm install --save express nodemon

(3)创建html文件

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Video Streaming With Node</title><style>body {max-width: 100%;height: 100vh;background-color: rgb(14, 14, 14);display: flex;margin: auto;align-items: center;justify-content: center;}</style></head><body><video id="videoPlayer" width="70%" controls autoplay ><source src="/video" type="video/mp4" /></video></body>
</html>

(4)创建index.js作为video接口服务

二,编写video接口

最终实现的效果如刚开始的实例,在浏览器中打开视频,会请求/video,该接口返回media类型的数据流片段。

首先引入express和fs。前者提供服务,后者操作文件系统,将视频文件序列化成流pipe出去。下面看看代码实现

 

const express = require("express");
const app = express();
const fs = require("fs");

app.get("/", function (req, res) {
res.sendFile(__dirname + "/index.html");
});

// more code will go in here just befor the listening function

app.listen(8000, function () {
console.log("Listening on port 8000!");
});

创建服务,serve Index.html文件。

app.get("/video", function (req, res) {const range = req.headers.range;if (!range) {res.status(400).send("Requires Range header");}
});

保证request的header里面有range,没有range就无法判断需要把那一部分content写入response。

const videoPath = "Chris-Do.mp4";
const videoSize = fs.statSync("Chris-Do.mp4").size;

还需要资源的路径和资源的大小,资源的大小会用来计算那一部分content要被send。这里简单放在相对index.js的位置。

const CHUNK_SIZE = 10 ** 6; // 1MB
const start = Number(range.replace(/\D/g, ""));

这里规定每次返回1M的内容,开始位置从request的header里获取并将其转成Number类型。

const end = Math.min(start + CHUNK_SIZE, videoSize - 1);

计算结束位置,这里取开始位置加上1M数据和结束位置两者之间的最小值。

三、创建Response headers。

在响应头里面我们需要返回Content的大小,Content-range,Accept-ranges,Content-type。

const headers = {"Content-Range": `bytes ${start}-${end}/${videoSize}`,"Accept-Ranges": "bytes","Content-Length": contentLength,"Content-Type": "video/mp4",
};

状态码设置为206表明我们返回的部分内容。

// HTTP Status 206 for Partial Content
res.writeHead(206, headers);

四、创建Stream并返回。

这里需要使用fs来创建一个videoSteam,使用videoPath和start和end作为参数。这里只需要把videoStream pipe到response即可。

// create video read stream for this particular chunkconst videoStream = fs.createReadStream(videoPath, { start, end });// Stream the video chunk to the clientvideoStream.pipe(res);

启动服务,看到视频被正常推流。好了,这里一个简易的视频推流服务就写好了。

-- End --

http://www.yayakq.cn/news/775575/

相关文章:

  • 太原0元网站建设请输入您网站的icp备案信息
  • 多语言站点 wordpresscookies因预料之外的输出被阻止 wordpress
  • 海陵区建设局网站做电影网站 资源怎么存放
  • 建设一个手机网站首页信息流优化师职业规划
  • 专业网站设计第三方橙云网站建设
  • 网站的广告语应该怎么做崔凯 本地wordpress
  • 哪些属于功能型网站网站设计公司佛山
  • 邯郸网站建设市场网站布局设计
  • 音乐网站开发技术wordpress xml大于2m
  • 公司网站建设制作难么网页设计与制作网站教程
  • 网站优化 pdf网站制作视频教程大全
  • 网站域名解释怎么做重庆seo推广方案
  • 河南建设工程信息网官网首页百度seo外包
  • 昆明外贸网站设计服务商鄂尔多斯网站建设
  • 做二手手机的网站有哪些网站制作语言有哪些
  • 有网站如何做直播PHP网站开发工程师招聘
  • 公司网站建设总结报告湖南做网站公司有哪些
  • 大同网站建设优化推广wordpress文章多个分类
  • 天津h5模板建站婚纱网站建设目的
  • 本溪做网站的宁波网页设计职业
  • 怎么知道网站开发语言safari浏览器下载
  • 廊坊网站建设维护网站给他人做付刑事责任
  • 六安做网站的公司怎么做一个网站平台
  • 网站降权分析河北雄安建设投资集团网站
  • 小说关键词搜索器seo sem论坛
  • 长春网站z制作diy建站系统
  • 沈阳做网站需要多少钱wordpress模板title属性
  • 建筑网站排行榜济南的互联网公司有哪些
  • 海淀网站建设本溪百度收录域名
  • 网站建设技术网站舟山做网站公司