游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

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

  一套简单的基于HLS流媒体协议,使用video。jsNodeJSFFmpeg等相关技术实现的m3u8tsaes128视频加密及播放的解决方案。目录项目简介项目启动项目原理技术栈源码简析建议项目简介
  起初是为了将工作中已有的基于Flash的视频播放器替换为不依赖Flash的HTML5视频播放器,主要使用了现有的video。js开源播放器做的定制化开发。当完成视频播放器的制作后,在进一步延伸Web端视频加密的相关内容时,开始了解并逐渐深入的研究了相关视频加密内容。最终通过整理归纳,以及自身的理解,做了这个简单的Demo。目的是为了能够给在视频加密这方面有相同目的的道友提供微薄的帮助,要是能起到抛砖引玉的效果,自然是再好不过了。项目启动
  1。安装项目环境安装node、npm环境根据app目录下的package。json安装对应的npm包安装ffmpeg
  2。启动项目在app目录下,输入npmstart,启动项目在浏览器中访问http:localhost:3000按照页面中的顺序进行相关操作项目原理
  本项目的核心原理其实就是讲解了一个视频源从正常的mp4格式如何变为加密后的m3u8文件ts文件key秘钥文件,之后又如何在服务端被限制访问,最终能够在客户端正常播放的视频加密、解密并播放的流程。技术栈NodeJSExpress实现服务器开发FFmpegfluentffmpeg实现node环境下的视频转码、加密socket。io通过websocket相关的类库,实现实时输出FFmpeg进行的视频转码、加密操作video。jsvideojscontribhls。js实现客户端的视频解密及播放htmlcssjs实现简单的前端开发源码简析
  项目目录说明videohlsencrypt。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。hls视频加密项目根目录app。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。express框架默认的app根目录bin。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。express框架启动的bin目录www。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。express框架启动的www文件controllers。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。项目控制器目录,服务器相关的逻辑代码encrypt。js。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。加密逻辑代码upload。js。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。上传逻辑代码nodemodules。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。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。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。秘钥文件keyinfo。key。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。ffmpeg加密视频转换相关文件libs。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。第三方类库目录videojs。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。videojs相关代码videojscontribhls。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。videojscontribhls相关代码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框架需要的第三方依赖包配置文件。gitignoreREADME。md。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。项目说明文档TODOList。md。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。项目开发计划文档复制代码
  源码简析简单的权限判断,app。js中:express的中间件判断请求的后缀判断session中是否有用户名,有则允许访问。key文件;没有则禁止访问主要是保护。key文件,可以加入其它的权限手段,比如token、session有效时长等等静态资源访问限制app。use(function(req,res,next){varsuffix(。key)g;后缀格式指定if(suffix。test(req。path)){console。log(req。session。username,请求key文件了);if((req。session。username!admin)){returnres。send(请求非法);}else{console。log(请求key文件了,并且已经登录,登录名为:,req。session。username);next();}}else{next();}});复制代码利用FFmpeg对视频进行加密、切片处理,在encrypt。js中:利用了FFmpeg的切片和加密方法建议可以深入研究FFmpeg框架的相关api可以根据实际业务来对视频进行更符合要求的切片处理加密处理方法paramoptions加密数据的相关参数paramsocketsocket输出paramcallback回调函数functionencryptFun(options,socket,callback){varnameoptions。fileName。split(。)〔0〕;vartypeoptions。fileName。split(。)〔1〕;varencryptPathoptions。encryptPathname;varvideoPathoptions。noencryptPathoptions。fileName;varkeyInfoPath。publickeykeyinfo。key;varoutputPathencryptPathplaylist。m3u8;console。log(beginencryptFun);if(typemp4){ffmpegCommand(videoPath)。addOption(hlstime,10)设置每个片段的长度。addOption(hlskeyinfofile,keyInfoPath)。save(outputPath)。on(end,function(){socket。emit(encryptevent,{msg:Encrypttheoptions。fileNamefileOK!,type:1});callback(null,Encrypttheoptions。fileNamefileOK!);})。on(stderr,function(stderrLine){console。log(Stderroutput:stderrLine);socket。emit(encryptevent,{msg:stderrLine});})。on(error,function(err,stdout,stderr){console。log(Cannotprocessvideo:err。message);socket。emit(encryptevent,{msg:err。message});callback(err,err。message);});}else{callback(typeerr,filetypeisnotmp4。);}}复制代码视频播放相关逻辑,player。ejs中:使用了videojs作为播放器插件使用了videojscontribhls作为切片流解码插件具体的逻辑代码在player。js中复制代码建议本项目更多的价值在于展示出一整套的加密原理,同时为了证明这套原理的可行性,做的比较简单的示例。本项目不会提供相关技术栈的使用教程。如果需要在实际应用中使用相关原理或技术栈,建议根据实际项目对部分或整体解决方案进行完善和扩展。

数据采集使用莫忘红绿灯日前,小鹏汽车因擅自采集43万张人脸照片被罚10万元登上热搜。虽然其声明收集的人脸信息已删除,但车企如何保护消费者个人信息的话题仍受到各方关注。小鹏汽车等企业想跑出更快的加速度……红杉成立50年,迎来第三位全球领导者红杉资本日前宣布RoelofBotha将担任全球高级执行合伙人,是红杉成立50年来第三位全球领导者。第一任领导者是1972创立红杉资本的DonValentine,期间投资……为什么有人宁愿溢价买华为,也不愿意去买性价比更高的小米手机?点赞爱国情怀!不容置疑!好现象!不要说什理性爱国,不要讲什么激情极端。我们和国家和当前国际,就是需要!越来越多的人素质提高了不知道你什么地方得到的数据,看看下面的数……蒋凡卸任淘宝法定代表人及董事长【大河财立方消息】天眼查App显示,4月1日,浙江淘宝网络有限公司、浙江天猫网络有限公司发生工商变更,蒋凡退出两家公司的法定代表人、董事长兼总经理职位,其在淘宝公司的所有职务由……如何看待龙芯之父胡伟武谈阿里华为等垂直系统企业做芯片能成功,龙芯为什么让人讨厌,一是把自己描述成中国唯一的清醒者救世者,二是到处口嗨引战,三就是看上去说的没毛病,实际是在糊弄普通人。比如这个就是第二三条,不用23亿,给我23万我也……纯电动是买特斯拉还是国产?特斯拉有其名没其实,你开着不定啥时候就控制不住了,车毁了就当丢了掉了,可事关人命关天。一定买国产的比如,比亚迪汉,小鹏,理念等等,都是不错的选择。我倒是在选车,但肯定不会……拍照手机哪个牌子好?国产手机还得看大厂,华为,OPPO,vivo,小米,魅族。说到这,还得再提下,魅族和Sony合作,未来可期。国外手机,也得看大厂,苹果,三星。苹果摄像无敌,拍……换新手机,是华为好还是苹果好?换新手机,是华为好还是苹果好?关于这个问题在网上吵得沸沸扬扬,回答这个问题也是仁者见仁,智者见智,谁也说服不了谁。在这里,我也谈点个人看法,佛界有曰:因果循环;道教有说:道法自……仅2099元144Hz高刷屏和5000mAh电池骁龙865旗在多款骁龙888旗舰手机开始降价促销后,搭载骁龙865芯片的手机也开始促销。其中,网友评价非常高的RedmiK30S至尊纪念版入门版只要2099元,很多网友高呼真香。不过,很多……滴水穿石高速应力显微镜给出定量解释科技日报北京3月31日电(记者张梦然)据最新一期《自然通讯》报道,美国明尼苏达大学双城分校研究人员领导的一项首创研究揭示了液滴为何具有腐蚀坚硬表面的能力。这一发现可以帮助工程师……英伟达收购案迎来反转,英国终于想清楚了,华为早已做好准备随着半导体技术的不断发展,越来越多的消费者都开始重视到了这项技术。尤其在美国针对华为推出一系列的芯片限制举措以后,对于芯片问题就更加的关注和担心,害怕又一家国产企业像华为一样被……长安蔚来更名,合资双方分道扬镳5月20日,长安汽车发布公告称,其控股子公司长安蔚来新能源汽车科技有限公司(简称:长安蔚来)现已正式更名为阿维塔科技有限公司(以下简称阿维塔科技)。官方表示,阿维塔科技将完全市……
谢谢你给了我11年的生命第九章转院我虽然醒了,但还不是完全意义的上的。大多数时间还是处于昏迷状态,不能说话。很好像住院以来,来探望我的亲人,同僚和朋友,尽管我不不能和他们进行语言交流。让他们担心和费心……酷开科技发布新品这是一块从体验出发真正打破边界的屏在各个平台都积蓄了海量收藏却从不回顾?每每要分享信息却受限于系统差异无法互通?这些日常生活、工作中随处可见的场景,在互联网蓬勃发展多年之后仍然是痛点问题,体验与多年……中孚信息保密防护领域后起之秀,依靠大客户实现高速增长选股理由:营收及净利润大幅增长股价近期创新高证券代码:300659评级:BBB数据截止日期:2019年12月31日单位:亿元成立日期:2002年;所在地:山东……GPDWIN3评测非微软官方的Switch前言TigerLake的便携性给人留下深刻印象。英特尔IrisXe核显在1080p下游戏的表现,对于大多数游戏玩家来说是难以接受的。但是,在5。5英寸便携式720p屏幕上……晓车评成都车展实拍全新第三代哈弗H6新车评测本届成都车展上,长城汽车带来了全新第三代哈弗H6车型,新车在造型设计上经过了大幅调整,变化明显,内饰设计上采用了大面积的钢琴烤漆材质、液晶显示仪表等科技配置,简化了实体按键,动……解决ampamp39contextcomponentscancvccomplextype。2。4。c:通配符的匹配很全面,但无法找到元素context:componentscan的声明一。异常描述在配置SpringMVC的时候,s……荣耀再次发力,Magic3手机拍照再升级,影像能力112自从独立以来,荣耀一直致力于打造具有明显荣耀特点的产品。虽然独立不到一年,但荣耀的拼劲十足,已经发布了多款智能手机,每一款手机都能成为各自领域的佼佼者。但如果真的要探讨荣耀的核……小米mix4和华为P50相比较,选择哪款更好?如果非要在这两款手机中选择一款手机进行购买,小芳我个人会更加倾向于小米mix4这款手机会更多一些。我给到的理由有以下几点,大家不妨参考一下。原因一:首先从性能角度来说,小……Matplotlib饼状图饼状图用来显示一个数据系列,具体来说,饼状图显示一个数据系列中各项目的占项目总和的百分比。Matplotlib提供了一个pie()函数,该函数可以生成数组中数据的饼状图。……盘点8款高效免费办公PDF文档处理工具我发现有很多人不知道PDF用什么编辑,有些同学甚至想利用转换的方式,PDF转到WORD或者Excel等格式再编辑。都没想到用PDF编辑软件。再说你编辑完了还要重新转换成PDF格……红米8A配置曝光,漂亮的不像百元机最近是不是被iPhone11刷屏了呢?不论是质疑或赞扬,这几天话题总是围绕在iPhone11身上。但有这么一款朴实的百元机却悄悄带着满满诚意来了。这就是来自小米旗下号称要干掉一……续航650公里,凯迪拉克纯电车型姗姗来迟近日,扉旅汽车小编从上汽通用凯迪拉克官方获悉,凯迪拉克首款纯电车型LYRIQ测试车已在上汽通用凯迪拉克工厂下线,并且在今年内在国内开启预售,预计2022年正式交付。作为凯……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网