范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

基于HLS流媒体协议视频加密,解决方案(源码分析)

  一套简单的基于HLS流媒体协议,使用video.js + NodeJS + FFmpeg等相关技术实现的m3u8+ts+aes128视频加密及播放的解决方案。目录项目简介项目启动项目原理技术栈源码简析建议项目简介
  起初是为了将工作中已有的基于Flash的视频播放器替换为不依赖Flash的HTML5视频播放器,主要使用了现有的video.js开源播放器做的定制化开发。当完成视频播放器的制作后,在进一步延伸Web端视频加密的相关内容时,开始了解并逐渐深入的研究了相关视频加密内容。最终通过整理归纳,以及自身的理解,做了这个简单的Demo。目的是为了能够给在视频加密这方面有相同目的的道友提供微薄的帮助,要是能起到抛砖引玉的效果,自然是再好不过了。项目启动
  1.安装项目环境安装node、npm环境根据app目录下的package.json安装对应的npm包安装ffmpeg
  2.启动项目在app目录下,输入npm start,启动项目在浏览器中访问 http://localhost:3000按照页面中的顺序进行相关操作项目原理
  本项目的核心原理其实就是讲解了一个视频源从正常的mp4格式如何变为加密后的m3u8文件+ts文件+key秘钥文件,之后又如何在服务端被限制访问,最终能够在客户端正常播放的视频加密、解密并播放的流程。技术栈NodeJS + Express 实现服务器开发FFmpeg + fluent-ffmpeg 实现node环境下的视频转码、加密socket.io 通过websocket相关的类库,实现实时输出FFmpeg进行的视频转码、加密操作video.js + videojs-contrib-hls.js 实现客户端的视频解密及播放html + css + js 实现简单的前端开发源码简析
  项目目录说明video-hls-encrypt/                   .............................. hls视频加密项目根目录   app/                             .............................. express框架默认的app根目录       bin/                         .............................. express框架启动的bin目录           www                      .............................. express框架启动的www文件       controllers/                 .............................. 项目控制器目录,服务器相关的逻辑代码           encrypt.js               .............................. 加密逻辑代码           upload.js                .............................. 上传逻辑代码       node_modules/                .............................. express框架需要的相关npm依赖包,即package.json文件相对应的依赖包           ...       public/                      .............................. express框架静态文件目录,客户端请求的相关静态文件           javascripts              .............................. 客户端的js文件目录               encrypt.js           .............................. 加密功能相关逻辑代码               index.js             .............................. 主页相关逻辑代码               player.js            .............................. 播放器相关逻辑代码               socket.io.js         .............................. socket.io.js 类库源文件               utils.js             .............................. 工具类           key/                     .............................. 秘钥相关目录               encrypt.key          .............................. 秘钥文件               key_info.key         .............................. ffmpeg加密视频转换相关文件           libs/                    .............................. 第三方类库目录               videojs/             .............................. videojs 相关代码               videojs-contrib-hls/ .............................. videojs-contrib-hls 相关代码           stylesheets/             .............................. css样式目录               common.css           .............................. 通用样式表           videos/                  .............................. 视频资源目录               encrypt/             .............................. 加密后的视频资源目录               noencrypt/           .............................. 加密前的视频资源目录       routes/                      .............................. express框架路由目录           router.js                .............................. express路由       views/                       .............................. express框架ejs模板目录           encrypt.ejs              .............................. 视频加密页面           error.ejs                .............................. 错误页面           index.ejs                .............................. 主页           login.ejs                .............................. 登录页面           player.ejs               .............................. 播放器页面           upload.ejs               .............................. 上传视频页面       app.js                       .............................. express程序入口       nodemon.json                 .............................. node服务器热更新插件nodemon对应的配置文件       package.json                 .............................. express框架需要的第三方依赖包配置文件   .gitignore   README.md                        .............................. 项目说明文档   TODO-List.md                     .............................. 项目开发计划文档 复制代码
  源码简析简单的权限判断,app.js中:express的中间件判断请求的后缀判断session中是否有用户名,有则允许访问 .key文件;没有则禁止访问主要是保护.key文件,可以加入其它的权限手段,比如token、session有效时长等等//静态资源访问限制 app.use(function (req, res, next) {     var suffix = /(.key)$/g;//后缀格式指定     if ( suffix.test(req.path)) {         console.log(req.session.username,"++++请求key文件了");         if((req.session.username != "admin")){             return res.send("请求非法");         }else{             console.log("+++++请求key文件了,并且已经登录,登录名为:",req.session.username);             next();         }     }     else {         next();     } }); 复制代码 利用FFmpeg对视频进行加密、切片处理,在encrypt.js中:利用了FFmpeg的切片和加密方法建议可以深入研究FFmpeg框架的相关api可以根据实际业务来对视频进行更符合要求的切片处理/**  * 加密处理方法  * @param options 加密数据的相关参数  * @param socket socket输出  * @param callback 回调函数  */ function encryptFun(options,socket, callback) {     var _name = options.fileName.split(".")[0];     var _type = options.fileName.split(".")[1];     var _encryptPath = options.encryptPath + "/" + _name;     var _videoPath = options.noencryptPath + "/" + options.fileName;     var _keyInfoPath = "./public/key/key_info.key";     var _outputPath = _encryptPath + "/playlist.m3u8";     console.log("begin encrypt Fun");     if (_type == "mp4") {         ffmpegCommand(_videoPath)             .addOption("-hls_time", "10")   //设置每个片段的长度             .addOption("-hls_key_info_file", _keyInfoPath)             .save(_outputPath)             .on("end", function () {                 socket.emit("encrypt-event",{msg:"Encrypt the " + options.fileName + " file OK!",type:1});                 callback(null, "Encrypt the " + options.fileName + " file OK!");             })             .on("stderr", function (stderrLine) {                 console.log("Stderr output: " + stderrLine);                 socket.emit("encrypt-event",{msg:stderrLine});             })             .on("error", function (err, stdout, stderr) {                 console.log("Cannot process video: " + err.message);                 socket.emit("encrypt-event",{msg:err.message});                 callback(err, err.message);             });     }     else{         callback("type err","file type is not mp4.");     } } 复制代码 视频播放相关逻辑,player.ejs中:使用了videojs作为播放器插件使用了videojs-contrib-hls作为切片流解码插件具体的逻辑代码在player.js中    复制代码 建议本项目更多的价值在于展示出一整套的加密原理,同时为了证明这套原理的可行性,做的比较简单的示例。本项目不会提供相关技术栈的使用教程。如果需要在实际应用中使用相关原理或技术栈,建议根据实际项目对部分或整体解决方案进行完善和扩展。

腾讯诉5G芝麻平台预装英雄联盟等游戏获赔88万蓝鲸TMT频道2月15日讯,天眼查App显示,近日,深圳市腾讯计算机系统有限公司杭州祺韵网络技术有限公司等著作权权属侵权纠纷民事一审民事判决书公布。文书显示,原告腾讯诉称,被告祺韵自带300个游戏,Steam掌机即将发售作为主机御三家的任天堂,其主机掌机的策略一直是独一份的,switch外出可以当便携式掌机,在家接电视又是一台性能刚够用的主机,可以说是想象力和技术力的结合(也可以说是妥协),也让它测评DOMINObySIM2DTVS激光电视实现色彩与亮度的跃升,并强化游戏性能从型号上来看,DTVS与DTV一样同属于DONIMO系列,外形上也完全延续了此前的意大利威尼斯GINDOLA建筑装饰栅格艺术设计风格,大胆采用高光仿水晶玻璃材质与流畅金属线条,最终书智能商业,主导未来的新商业模式你好,我是bluehouse456,期待大家的点赞与关注,这是对我最大的支持,谢谢!你好,今天为大家解读的是智能商业。它的作者,是中国互联网界的超级智囊,阿里巴巴集团的军师,曾鸣。手机预装软件删不掉?新规拟要求除基本功能软件外均可卸载南都讯记者蒋琳智能手机预装多个App且无法卸载的行为将迎来规范。近日,工业和信息化部(下称工信部)信息通信管理局发布关于进一步规范移动智能终端应用软件预置行为的通告(征求意见稿)并中国发布丨工信部拟规定除基本功能软件外的预置App均可卸载中国网2月17日讯工业和信息化部日前公开对关于进一步规范移动智能终端应用软件预置行为的通告(以下简称通告)征求意见,通告指出,生产企业应确保除基本功能软件外的预置应用软件均可卸载,网易云音乐上线无缝播放功能支持全格式音频品玩2月17日讯,近日,网易云音乐上线无缝播放功能,带来更专业的数字音乐内容体验。无缝播放(GaplessPlayback),是指对播放列表中歌曲无间断的播放,使前后两首歌无缝衔接智能手机成瘾榜德国垫底,美国仅排18,中国排名全球第一文谛林审核子扬校正知秋全球手机市场从功能机时代升级为智能机时代后,智能手机在消费者的日常生活中开始扮演越来越重要的角色。时至今日,智能机已经成为大多数消费者的生活必需品,移动支付以好多中老年手机摄影班,这能算得上是摄影吗?攝影这个词,是不具备身份的代名词,不会拍照可以学习,更不能用年令段来划分。有点基础退休后,若再深造加以提升技能,无可厚非。俗话说姜还是老的辣。这个问题问的好有意思。好多中老年手机摄龙湖集团拟21。6亿元收购大股东智能科技及医疗服务资产9月29日晚间,龙湖集团控股有限公司发布公告称,公司拟以21。6亿元收购公司大股东孵化的智能科技及医疗服务资产。据公告,此次龙湖集团收购的两大资产中的智能科技资产为北京百佑科技有限容声冰箱哪款最值得买?性价比高吗?看完你就知道了说起容声的话大家应该都不是很陌生吧。我家里现在用的那台就是容声的对开门冰箱,在这台冰箱之前也是买的容声的对开门冰箱,只是颜色不一样。先说一下,我对它的整体印象吧,对开门确实比较的大
年度十大热歌是短视频歌曲,华语乐坛要完了吗?12月11日晚,号称华语乐坛国民级音乐娱乐盛事的第三届TMEA腾讯音乐娱乐盛典在澳门威尼斯人金光综艺馆闭幕。典礼中揭晓了年度十大热歌,云与海踏山河白月光与朱砂痣浪子闲话可可托海的牧GouiGoweb如何一步步整合swaggerui我们可以官方提供的方式httpsgithub。comgoswaggergoswagger,主要方式是1写我们的go程序,2让swagger面对恒大的坏消息接踵而至,如果真的破产,会有什么后果?恒大集团的债务危机还在持续发酵之中。继本月初恒大宣布一笔2。6亿美元的债务违约之后,12月7日工信部发布了道路机动车辆生产企业及产品的许可公告,恒大的新能源汽车已被除名。这意味着,联想和柳杨事件整个过程是怎么回事?你怎么看?北大方正百分百国资,破产倒闭了。清华控股百分百国资,连年亏损,最近无偿转让给一家地方国企。紫光集团,百分百国资,国家投入千亿,转做芯片,几年下来难以为继,破产重组!这么多国资流失,Spring的Controller是单例还是多例?怎么保证并发的安全我们下面来简单的验证下packagecom。riemann。springbootdemo。controllerimportorg。springframework。context。a5G云XR助推百年工业遗址焕新彩首钢工业遗址公园。中国青年网北京12月17日电(记者张诗莹)日前,在深圳举办的第四届绽放杯5G应用征集大赛全国总决赛上,当红齐天首钢一号熔炉5G云XR项目从12000余个参赛项目中2021高考十大热搜专业出炉,4个与互联网相关很亮眼(上)距离高考仅剩最后几天,高三学子们已经在严阵以待,而与此同时,2021高考十大热搜专业也火热出炉了!2021届考生最爱哪些专业?哪些专业月收入更高呢?相信大家已经迫不及待想知道答案了华为鸿蒙系统已经落地,小米芯片计划何时再放光芒?说到国产手机,就离不开华为这个品牌,从曾经的中华酷联到如今的华米OV,华为从未缺席,也一直被广大网友称为国产手机的老大哥。但是近年来,小米的呼声也是愈演愈烈,两家厂商也是咱们国产手万万没想到!鸿蒙系统刚发布,华为就宣布捐献核心架构智能手机可以说是如今每一个人必备的数码产品,也是我们日常生活中最为常见的数码产品。基于此点,如今智能手机市场的规模相当庞大,竞争也是十分激烈。而在竞争激烈的智能手机市场当中,有着一华为WATCH3首款鸿蒙手表,野心何在?回溯上一代华为WATCH的纯数字系列,那已经是2017年了,时隔4年,华为终于更新了纯数字系列,带着新的鸿蒙系统来了新的手表,就叫做华为WATCH3。华为的纯数字系列,跟GT系列不国货当然要支持,但是木桶效应让我对这款红旗EHS9又爱又恨红旗EHS9定位为大型纯电动SUV,指导价格50。9872。98万元。目前已经上市了一段时间了,月销量差不多在几百台左右。有人会说才几百台,这么少。朋友,奥迪A6L的新能源车型,每