基于M3u8的视频加密及播放

news/2024/11/15 20:47:18/文章来源:https://www.cnblogs.com/shenxiaobin/p/18306569

准备工作

  安装ffmpeg   mac安装 brew install ffmpeg

 

加密准备

  生成enc.key

openssl rand 16 > enc.key ( 生成一个enc.key文件 )

  生成 iv

openssl rand -hex 16 ( 生成一段字符串,记下来)

  新建一个文件 enc.keyinfo 内容格式如下:

Key URI # enc.key的路径,使用http形式 
Path to key file # enc.key文件 
IV # openssl rand -hex 16生成的字符串

  示例:

https://www.xxx.com/video/enc.key
/Users/path/enc.key
65da35f98302e8e0f480e92d0dbde5d3

  其中 https://xxx/enc.key 你需要提供对外的接口,可以通过接口访问到enc.key文件的内容,你可以放到自己的web项目中,

视频分片

ffmpeg -y \
-i "/Users/bukesu/test/test.mp4" \
-hls_time "10" \
-hls_key_info_file "/Users/path/enc.keyinfo" \
-hls_playlist_type "vod" \
-hls_list_size "0" \
-hls_segment_filename "/Users/path/ts/file%d.ts" \
"/Users/path/playlist.m3u8"hls_time:指定生成 ts 视频切片的时间长度s
hls_key_info_file:enc.keyinfo文件的位置
hls_list_size: 索引播放列表的最大列数 默认5,0 为不限制
hls_segment_filename:生成ts和m3u8文件的路径及文件名

  将分片后的视频文件是部署到服务器  

  验证:在浏览器输入 https://www.m3u8play.com/ 网址,输入https://www.xxx.com/ts/playlist.m3u8

   x.m3u8文件示例

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:25
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-KEY:METHOD=AES-128,URI="https://www.xxx.com/video/enc.key",IV=0x65da35f98302e8e0f480e92d0dbde5d3
#EXTINF:13.600000,
video/ts/file0.ts
#EXTINF:10.600000,
video/ts/file1.ts
#EXTINF:15.666667,
video/ts/file2.ts
#EXT-X-ENDLIST

  

前端交互

  后端增加一个获取token的api:https://www.xxx.com/getSecret?id=1   并对返回的token进行加密

      在访问https://www.xxx.com/ts/playlist.m3u8及https://www.xxx.com/video/enc.key不直接访问文件,使用路由进行token验证,每个token仅可使用一次(token有前端解密获得)

流程图

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/745090.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zabbix6.4分离部署笔记

Zabbix 6.4 分离部署实施过程 一、环境准备 三台服务器### 操作系统:RED HAT ENTERPRISE LINUX 8.3 数据库:MYSQL8.0 ip地址以及用途:Zabbix 前端,8C 16G 16G系统盘100G:10.0.13.71 1371zabbixwebZabbix服务后端,8C 16G 100G:10.0.13.63 1363zabbixserverZabbix数据库MySql…

极大值抑制 nms 代码详解

NMS: 非极大值抑制(Non-Maximum Suppression), 功能:从大量的预测结果中筛选出得分最高的结果。 思路:NMS的主要思路是通过计算目标框之间的重叠度(即IOU,交并比)来剔除非最佳结果。NMS介绍 一张图片经过模型的前向推理之后,会输出非常多的检测结果,如下图Prediction所…

终端日志查看工具

tailspin 安装: # macOS brew install tailspin# Cargo cargo install tailspin使用: tspin <file>lnav 安装: # macOS brew install lnav# Ubuntu sudo snap install lnav使用: lnav <file>

Cisco ACI Simulator 6.0(6c)M - ACI 模拟器

Cisco Nexus 9000 Series Switches, NX-OS Standalone 10.4(3)F and ACI Mode 16.0(6c)MCisco ACI Simulator 6.0(6c)M - ACI 模拟器 Application Centric Infrastructure (ACI) Simulator Software 请访问原文链接:https://sysin.org/blog/cisco-acisim-6/,查看最新版。原创…

新文章:“Java 中的 finally 代码块不执行的情况”

新文章:“Java 中的 finally 代码块不执行的情况” - https://www.emanjusaka.top/2024/07/java-finally-non-execution 先抛出一个问题:Java 中的 finally 代码块一定会被执行吗?这是一个比较常见的面试题,在我们的印象中好像 finally 的代码块是一定会被执行的。但真实的…

SublimeText 4.4169 汉化版

SublimeText是编辑器中的一款神级IDE,非常有名,虽然比较轻量,但是呢软件拓展性非常强大,适用于多种编程语言,当然,当一个编辑器,也是非常不错的。 SublimeText支持但不限于 C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, L…

表格集算表高性能原理:揭秘纯前端百万行数据秒级响应的魔法

最新技术资源(建议收藏) https://www.grapecity.com.cn/resources/集算表 (Table Sheet)是一个具备高性能渲染、数据绑定功能、公式计算能力的数据表格,通过全新构建的关系型数据管理器结合结构化公式,在高性能表格的基础上提供排序、筛选、样式、行列冻结、自动更新、单…

eclipse免安装版64位 2018版本

前言Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。虽然大多数用户很乐于将 Eclipse 当作 Jav…

Iceberg v2表写入和微批治理冲突,如何保证治理准确性

一、背景 微批治理任务分多个job治理一张表,还有一个Flink程序每5分钟一次写入iceberg表,如治理任务划分了20个job治理一张表,在治理期间存在新的数据更新,如何保证治理准确性 二、猜想待验证 1、治理和写入时快照和文件变化snapshot_id manifest_file 备注

Fastjson的payload收集

收集了网络上的多种payload,方便进行fuzz测试What 无第三方依赖 收集了网络上的多种payload,方便进行fuzz测试 提供了自动替换payload的功能,一次性为所有payload插入rmi地址/dnslog Help --list:以清单的形式打印,方便作为字典进行fuzz --address:服务器地址(无需rmi:/…

DBeaver安装教程(开发人员和数据库管理员通用数据库管理工具)

前言 DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase, Mimer, HSQLDB, Derby, 以及其他兼容 JDBC 的数据库。DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修…

一分钟解决CLIENT_PLUGIN_AUTH is required. IDEA连接数据库时报错

CLIENT_PLUGIN_AUTH is required. IDEA连接数据库时报错 ​ 今天楼主在导入java项目时在连接数据库时IDEA报的错误为CLIENT_PLUGIN_AUTH is required. ​ 报错如下图:经过多方排查,发现是之前下载过其他数据库,导致系统服务里已经启动了一个MySql服务​ 已经安装过小蜜蜂数据…