UltraDebug

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: A C D R G Y M Z X S P
公益项目,接受捐赠
查看: 1702|回复: 0
收起左侧

[原创] 在线M3U8音视频加密安全与技术防护

[复制链接]
Alanna

主题

0

回帖

UD

新手上路

UID
38
积分
32
注册时间
2022-5-15
最后登录
1970-1-1
2022-9-11 22:25:47 | 显示全部楼层 |阅读模式

您好,本篇文章将由浅入深介绍M3U8视频格式及视频加密切片和市面上常见的加密防护托管方案。

前言

近几年来知识付费的概念越来越受到欢迎,那么作为视频网校方而言,如何保证用户体验的前提下,防止视频资源被下载,低价贩卖传播,维护讲师和平台的利益,就成为了一个急需解决的问题。

常见的视频格式

后缀名 介绍 创造者
.mp4 目前用途十分广泛的视频格式,例如网络电影、手机拍摄的视频、智能设备拍摄的视频、宣传片、MV等。.mp4具有在较小的文件属性下,拥有接近DVD画质的视频图像质量文件。 Moving Picture Experts Group-4(运动图像专家组)
.m4v 一种应用于网络视频点播网站和移动手持设备的视频格式,是MP4格式的一种特殊类型,其后缀常为.MP4或.M4V,其视频编码采用H264,音频编码采用AAC。 苹果公司
.mov 一种音频、视频文件封装,用于存储常用数字媒体类型。 苹果公司
.avi 这个视频格式的文件,体积较同等时间、分辨率、音质码流等条件下偏大,其压缩方式众多;在二十年前,很多文件是以AVI格式来传播、拷贝的,目前,使用者不如之前多了。 微软公司
.wmv 在十几年前的流媒体mms时代,这种格式的视频文件和rm格式视频文件,备受欢迎,压缩比率高,画质损失也比较严重;使用的是SMPTE 421M标准,但是这种格式视频,这些年似乎不再流行。 微软公司
.flv 这种格式的文件,其特点是体积特别小,但是画质音质都损失严重。随着flash淡出历史舞台,这种格式的视频文件,也已不再流行。 Adobe
.mkv 能够在一个文件中容纳无限数量的视频、音频、图片或字幕轨道。所以其不是一种压缩格式,而是Matroska定义的一种多媒体容器文件。其目标是作为一种统一格式保存常见的电影、电视节目等多媒体内容。 CoreCodec Inc

我们最熟悉和常见的就是 MP4 格式了,但是目前90%的视频网站,却采用了 M3U8 格式

M3U8格式

HLS(HTTP Live Streaming) 是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。

M3U文件是记录了一个索引纯文本文件,可以指定一个或多个多媒体文件的位置,其文件扩展名是“M3U”或者“m3u”。打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。M3U文件的作用通常是创建指向在线流媒体的播放列表,创建的文件可以轻松访问流媒体。

M3U8是Unicode版本的M3U,用UTF-8编码。

m3u8 文件实质是一个播放列表(playlist),其可能是一个媒体播放列表(Media Playlist),或者是一个主列表(Master Playlist)。

当 m3u8 文件作为媒体播放列表(Meida Playlist)时,其内部信息记录的是一系列媒体片段资源,顺序播放该片段资源,即可完整展示多媒体资源。对于点播来说,客户端只需按顺序下载片段资源,依次进行播放即可。而对于直播来说,客户端需要定时重新请求该 m3u8 文件,看下是否有新的片段数据需要进行下载并播放。

当 m3u8 作为主播放列表(Master Playlist)时,其内部提供的是同一份媒体资源的多份流列表资源(Variant Strean)。客户可以根据不同的网络状态选取合适码流的资源,并且最好根据用户喜好选择合适的资源内容。

m3u8 文件要么是媒体播放列表,要么是主播放列表。但无论是哪种列表,其有效组成均由两部分构成:

  1. 以 #EXT 开头的为标签信息,作为对媒体资源的进一步描述;
  2. 剩余的为资源信息,要么是片段资源(Media Playlist)路径,要么是 m3u8 资源(Master Playlist)路径;

m3u8文件遵循的条件

  1. m3u8 文件必须以 utf-8 进行编码,不能使用 Byte Order Mark(BOM)字节序, 不能包含 utf-8 控制字符(U+0000 ~ U_001F 和 U+007F ~ u+009F)。
  2. 每一行要么是一个 URI,要么是空行,要么就是以 # 开头的字符串。不能出现空白字符,除了显示声明的元素
  3. 以 # 开头的字符串要么是注释,要么就是标签。标签以 #EXT 开头,大小写敏感。

常用标签

标签名 功能介绍
EXT-X-DISCONTINUITY 该标签表明其前一个切片与下一个切片之间存在中断。EXT-X-DISCONTINUITY 的一个经典使用场景就是在视频流中插入广告,由于视频流与广告视频流不是同一份资源,因此在这两种流切换时使用 EXT-X-DISCONTINUITY 进行指明,客户端看到该标签后,就会处理这种切换中断问题,让体验更佳。
EXT-X-KEY 媒体片段可以进行加密,而该标签可以指定解密方法。
EXT-X-PLAYLIST-TYPE 表明流媒体类型。全局生效。该标签为可选标签。 可选值如下:【VOD】 即 Video on Demand,表示该视频流为点播源,因此服务器不能更改该 m3u8 文件;【EVENT】 表示该视频流为直播源,因此服务器不能更改或删除该文件任意部分内容(但是可以在文件末尾添加新内容)
EXT-X-PROGRAM-DATE-TIME 该标签使用一个绝对日期/时间表明第一个样本片段的取样时间。
EXT-X-MEDIA-SEQUENCE 表示播放列表第一个 URL 片段文件的序列号,每个媒体片段 URL 都拥有一个唯一的整型序列号。 每个媒体片段序列号按出现顺序依次加 1。媒体片段序列号与片段文件名无关。如果该标签未指定,则默认序列号从 0 开始。
EXT-X-ENDLIST 若出现EXT-X-ENDLIST标签,则表明M3U8文件不会再产生更多的切片,可以理解为该M3U8已停止更新,并且播放分片到这个标签后结束。M3U8不仅仅是可以作为直播,也可以作为点播存在,在M3U8文件中保存所有切片信息最后使用EXT-X-ENDLIST结尾,这个M3U8即为点播M3U8。EXT-X-ENDLIST标签可能会出现在播放列表文件的任何地方,但是不能出现两次或以上。
EXT-X-STREAM-INF EXT-X-STREAM-INF标签出现在M3U8时,主要是出现在多级M3U8文件中时,例如M3U8中包含子M3U8列表,或者主M3U8中包含多码率M3U8时;该标签后需要跟一些属性,下面就来逐一说明一下这些属性:【BANDWIDTH】:BANDWIDTH的值为最高码率值,当播放EXT-X-STREAM-INF下对应的M3U8时占用的最大码率(必要参数)。【AVERAGE-BANDWIDTH】:AVERAGE-BANDWIDTH的值为平均码率值,当播放EXT-X-STREAM-INF下对应的M3U8时占用的平均码率(可选参数)。【CODECS】:CODECS的值用于声明EXT-X-STREAM-INF下面对应M3U8里面的音视频编码、视频编码的信息(可选参数)。【RESOLUTION】:M3U8中视频的宽高信息描述(可选参数)。【FRAME-RATE】:子M3U8中的视频帧率(可选参数)。
...省略 如果感兴趣,可以去购买《FFmpeg从入门到精通》书籍或者查阅ffmpeg官方文档(英文版) http://www.ffmpeg.org/ffmpeg-all.html

客户端播放M3U8的一些标准

  1. 分片必须是动态改变的,序列不能相同,并且序列必须是增序的
  2. 当M3U8没有出现EXT-X-ENDLIST标签时,无论这个M3U8列表中有多少个分片,播放分片都是从倒数第三片开始播放,如果不满3片则不应该播放。当然如果有些播放器做了特别定制了,则可以不遵照这个原则。
  3. 以播放当前分片的duration时间刷新M3U8列表,然后做对应的加载动作。
  4. 如果播放列表在刷新之后与之前的列表相同,那么在播放当前分片duration一半的时间内在刷新一次。
  5. 前一片分片和后一片分片有不连续的时候,播放可能会出错,那么需要X-DISCONTINUTY标签来解决这个错误。

注意事项

  1. 有两种请求 m3u8 播放列表的方法:一是通过 m3u8 的 URI 进行请求,则该文件必须以 .m3u8 或 .m3u 结尾;二是通过 HTTP 进行请求,则请求头 Content-Type 必须设置为 application/vnd.apple.mpegurl 或者 audio/mpeg
还有更多的精彩内容,作者设置为付费后可见
UltraDebug免责声明
✅以上内容均来自网友转发或原创,如存在侵权请发送到站方邮件9003554@qq.com处理。
✅The above content is forwarded or original by netizens. If there is infringement, please send the email to the destination 9003554@qq.com handle.

相关帖子

回复 打印

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|站点地图|UltraDebug ( 滇ICP备2022002049号-2 滇公网安备 53032102000034号)

GMT+8, 2025-6-18 07:36 , Processed in 0.039613 second(s), 10 queries , Redis On.

Powered by Discuz X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表