七牛切片视频php,音视频切片(HLS)
音视频切片接口用于支持HTTP Live Streaming播放。HTTP Live Streaming 是由 Apple 提出的基于 HTTP 的流媒体传输协议。它将一整个音频、视频流切割成可由 HTTP 下载的一个个小的音视频流,并生成一个 M3U8 播放列表,客户端只需要获取资源的 M3U8 播放列表即可播放音视频。以下用 HLS 代指 HTTP Live Streaming。
使用方法
命令可以根据需要自定义,如:
avthumb/m3u8/noDomain/1/vb/500k/t/10
命令的调用,可以在上传时指定persistentOps参数(即预转持久化),或者调用pfop命令(即触发持久化)。以 Python Sdk 为例,具体可以看下音视频转码的示例。需要在音视频转码的示例的基础修改数据处理命令 fops ,将其修改为:
fops = avthumb/m3u8/noDomain/1/vb/500k/t/10
注意:
其他语言 Sdk 可在官方 Sdks下载,可以通过查看 Sdk 使用指南中触发持久化,预转持久化使用,如Python Sdk 使用指南。
接口规格
avthumb/m3u8/noDomain/
/domain/
/segtime/
/ab/
/aq/
/ar/
/r/
/vb/
/vcodec/
/acodec/
/scodec/
/subtitle/
/ss/
/t/
/s/
/stripmeta/
/rotate/
/hlsKey/
/hlsKeyType/
/hlsKeyUrl/
/pattern/
/segmentType/
/segmentInit/
/refine/参数名称
类别
必填
说明
/noDomain/
A/V
是
取值 0 或 1,默认为 0,推荐取值为 1。表示切片索引中的切片列表,是否使用相对地址,设置为 0 则使用绝对地址,设置为 1 则使用相对地址。
/domain/
A/V
用户指定切片中ts文件的域名。
注意:域名需要urlbase64编码,且不能带http;该参数不能和noDomain/1共同使用。
/segtime/
A/V
用于 HLS 自定义每一小段视频流及其包含的音频流的播放时间长度,取值范围为: 2 - 120(秒),默认值为 10秒。
/ab/
A
静态码率 (CBR),单位为比特每秒 (bit/s),常用的码率有:64k,128k,192k,256k,320k等。
/aq/
A
动态码率 (VBR),取值范围为0-9,值越小码率越高。不能与静态码率参数共用。
/ar/
A
音频采样频率,单位为赫兹 (Hz),常用的采样频率有:8000,12050,22050,44100等。
/r/
V
视频帧率,每秒显示的帧数,单位为赫兹 (Hz),常用的帧率有:24,25,30等,一般用默认值。
/vb/
V
视频比特率,单位为比特每秒 (bit/s),常用的视频比特率有:128k,1.25m,5m等。
/vcodec/
V
视频编码方案,支持的方案有:libx264,libx265,libvpx,libtheora,libxvid等,默认为libx264。
/acodec/
A
音频编码方案,支持的方案有:libmp3lame,libfdk_aac,libvorbis等。
/scodec/
V
字幕编码方案,支持的方案有:mov_text。该参数仅用于修改带字幕视频的字幕编码。
/subtitle/
V
添加字幕,支持:srt格式字幕 (uft-8编码和和utf-8 BOM编码),带有字幕的mkv文件,embed (将原视频的字幕流嵌入目标视频)。基于base64编码。
/ss/
V
指定视频截取的开始时间,单位为秒,支持精确到毫秒,例如3.345s。用于视频截取,从一段视频中截取一段视频。
/t/
V
指定视频截取的长度,单位为秒,支持精确到毫秒,例如1.500s。用于视频截取,从一段视频中截取一段视频。
/s/
V
指定视频分辨率,格式为:x,或者预定义值。
/stripmeta/
A/V
是否清除文件的metadata,1为清除,0为保留。
/rotate/
V
指定顺时针旋转的度数,取值可为:90,180,270,auto,默认为不旋转。
/hlsKey/
A/V
AES128加密视频的秘钥,必须是16个字节。
/hlsKeyType/
A/V
密钥传递给我们的方式,0或不填。1.x(1.0, 1.1, ...):见下面详细解释。
/hlsKeyUrl/
A/V
密钥的访问url
/pattern/
A/V
为各音视频流ts文件自定义命名。
因为一整段音视频流音视频切片后会生成一个M3U8播放列表和多个默认命名的音视频流ts文件。示例:avthumb/m3u8/noDomain/1/pattern/eGlhb3hpYW8kKGNvdW50KQ==,其中eGlhb3hpYW8kKGNvdW50KQ==是自定义ts文件名,如:qiniu$(count)的URL安全的Base64编码,其中$(count)是必须存在的六位占位符数字串,qiniu可以自己定义。最后得到类似:qiniu000000,qiniu000001,……,qiniu000006命名的ts文件。
/segmentType/
A/V
指定分片的格式,支持 mpegts 与 fmp4,默认为 mpegts。
/segmentInit/
A/V
当分片格式为 fmp4 时,指定初始化文件的名称,也即由 EXT-X-MAP 指定的 URI 名称,需要 base64_urlsafe 编码。注意,使用该参数指定的输出文件的文件名后缀如果不是输出文件的真实格式,可能使某些媒体播放器不兼容。
/refine/
V
选择高效转码或者高质量转码,可选值为 0 或 1。默认为 0,即高效转码,当选择值 1 时,即为高质量转码。
注意:
avthumb 切片的结果会保存在原文件的空间中,包含多个小的 ts 文件和 m3u8 playlist 文件,但是 m3u8 playlist 文件名按照默认规则生成,为了方便获取切片后的 m3u8 资源链接,建议自定义处理结果资源的名称,请参考处理结果另存 (saveas)。
当和值同时为copy,即不进行音视频编解码操作时以音视频转封装计费。
示例
以预转持久化形式,将 mp4 视频按 vb/240k 预设规格切片(15秒一片):
{
"scope": "qiniu-ts-demo:sample.mp4",
"deadline": 1390528576,
"persistentOps": "avthumb/m3u8/noDomain/1/segtime/15/vb/240k",
"persistentNotifyUrl": "http://fake.com/qiniu/notify"
}以持久化数据处理(即触发持久化)形式,将 mp4 视频切片,静态码率为 320K,帧率为 24fps:
POST /pfop/ HTTP/1.1
Host: api.qiniu.com
Content-Type: application/x-www-form-urlencoded
Authorization: QBox
bucket=qiniu-ts-demo
&key=sample.mp4
&fops=avthumb%2Fm3u8%2Fab%2F320k%2Fr%2F24
¬ifyURL=http%3A%2F%2Ffake.com%2Fqiniu%2Fnotify
注意:要在 Authorization 头部的前添加 QBox 和半角空格。
hls加密
hls加密是利用AES-128位对每个ts文件进行加密,播放器在取得PlayList文件的时候,会根据里面的#EXT-X-KEY标签请求获得解密的URL,再请求解密密钥,之后会用密钥对获取的ts文件解密。用户可以对密钥的URL做cookie验证等方法来对用户做认证。
例子:PlayList文件 (复制链接,查看文件内容或直接用vlc播放器播放)
参数解释:
hlsKey: base64_urlsafe编码或加密过后的密钥
hlsKeyUrl: 指定了密钥放置的url,经过base64_urlsafe编码,这是生成m3u8 PlayList会使用到的
hlsKeyType: 指定了传送秘钥的方式不指定或者指定为0,则仅仅是以base64_urlsafe编码的方式传送。
指定为1.x(1.0, 1.1, ...),以RSA的OAEP加密方式,再以编码传送密钥,x表示密钥的版本
公钥:1.0
如何加密RSA:
可以编程的方法,或者使用openssl,下面提供openssl的版本:
$ echo -n [AES128KEY] | openssl rsautl -encrypt -oaep -inkey [QINIU_PUB_KEY_FILE] -pubin | openssl base64 -A | tr "+/" "-_"
参数解释:
AES128Key:HLS_AES128加解密密钥(用户定义的加解密密钥)
QINIU_PUB_KEY_FILE:加密上述AES128Key的RSA算法公钥文件(前文七牛提供的公钥1.0)
示例:
不使用rsa加密:
avthumb/m3u8/noDomain/1/s/720x480/vb/640k/hlsKey/ZXhhbXBsZWtleTEyMzQ1Ng==/hlsKeyUrl/aHR0cDovL29ndG95d2Q0ZC5ia3QuY2xvdWRkbi5jb20vaGxzMTI4LmtleQ==使用rsa加密:
avthumb/m3u8/noDomain/1/s/720x480/vb/640k/hlsKey/lsLFcVEISp-1iCoKCMRii6EgqAuUJs-f3FupKlFlbYnAjst5tsZ5U5cttUHp6TKIwW3eNMoBjjTgBnFlBoOku_DR0RMmFDgRxADf7vKRaaISSK0-rm3E4PzMiGybIpf9WIGzmQZLNpCcHOG1ThQU_8j3H4qQAX0nd7HxPcPEaPk=/hlsKeyType/1.0/hlsKeyUrl/aHR0cDovL29ndG95d2Q0ZC5ia3QuY2xvdWRkbi5jb20vaGxzMTI4LmtleQ==
七牛切片视频php,音视频切片(HLS)相关推荐
- php 七牛 视频切片,七牛云试用指南-音视频切片与播放授权
对于大型音视频而言,完整下载后再播放会导致延时很大.针对这种应用场景,七牛云还提供对音视频进行切片存储的功能,目前已支持HLS(HTTP Live Streaming,Apple提出的基于HTTP的流 ...
- 音视频开发---音视频同步算法
目录 ffplay简介 为什么要做音视频同步 音视频同步算法 参考 本文是对音视频同步算法的总结,以阅读ffplay.c源码为基础,结合各位博主的分析, 逐渐深入理解同步算法原理, 并根据自身理解, ...
- javacv+远程视频直播+音视频录制+视频抓取
远程视频直播+音视频录制+视频抓取 请首先阅读注意事项文末有github地址 远程直播展示 音视频录制 运行会有延迟,视频为mp4格式存储在D盘. 视频抓取 注意事项 远程直播需要下载一个软件:VLC ...
- Android OpenGL添加水印并录制视频--抖音视频录制原理
Android OpenGL添加水印并录制视频–抖音视频录制原理 简单的视频录制,我们可以使用MediaRecorder,具体示例可以参考Gitee: Camera2VideoJava 本文将介绍采集 ...
- 音视频开发-音视频面试必问的直播延迟分析丨FFmpeg|SRS流媒体服务器|webrtc|Android NDK开发|HTTP-FLV|RTSP
音视频面试必问的直播延迟分析 1.直播延迟500ms是极限吗,加上WebRTC能做到多少 2.推流的延迟分析 3.流媒体服务器延迟分析 4.拉流的延迟分析 视频讲解如下,点击观看: 音视频开发-音视频 ...
- FFMPEG音视频同步-音视频实时采集并编码推流
FFMPEG音视频同步-音视频实时采集并编码推流 //------------------------------------------------------------------------- ...
- 即时通讯音视频解决方案 音视频技术处理
即时通讯音视频解决方案 音视频技术处理 音视频即时通讯技术方面,云智真即时通讯音视频SDK包含了音视频处理模块(采集.编解码).流媒体管理模块(丢包重传.抖动平滑.动态缓冲).流媒体播放模块(多路混音 ...
- 七牛切片视频php,音视频切片
音视频切片 描述 音视频切片是七牛云存储提供的云处理功能,用于支持HTTP Live Streaming播放. HTTP Live Streaming是由Apple提出的基于HTTP的流媒体传输协议. ...
- 七牛云 转码_七牛云试用指南-音视频基本处理
对于音频.视频等多媒体资源,七牛云也提供了丰富的处理指令,包含但不限于以下指令: 本篇从获取音视频元信息入手,顺序讲解各个处理指令. ■ 获取音视频元信息 使用avinfo接口可以非常方便地获取一个音 ...
最新文章
- 利用SecureCRT上传、下载文件(使用sz与rz命令)
- ASP.NET GridView嵌套DataList实例
- java语言主要因为具备了,Java语言的魅力
- r语言解析html,R语言爬虫入门-rvest教程
- 操作系统:UNIX、Linux、IOS、Android之间的渊源
- 深入理解javascript原型和闭包
- 休眠事实:始终检查Criteria API SQL查询
- 如何集成Python代码和GUI来创建一个简单的游戏?
- vue点击input框出现弹窗_vue组件实现弹出框点击显示隐藏效果
- 最受欢迎Java数据库访问框架大比拼,你独爱哪一款?
- 正则表达式就这么简单!
- 搜狗拼音、QQ拼音输入法、2345拼音输入法、百度输入法 、手心输入法对比。(个人体会)...
- Spring5,最全教程,带你认识IOC容器和AOP切面
- 文安三中电子计算机老师叫什么,顶岗实习周记:记我的第一次.doc
- Keil 保护视力背景颜色设置和代码的颜色设置
- 个人笔记上传 -- linux简单命令
- IC - 什么是数字IC设计?
- 让笔记本触摸板默认关闭
- 大学毕业小总结以及感想
- 会签是什么,何时使用会签,如何设计使用会签
热门文章
- HTML(XHTML)基础知识(三)——【image】
- Python输入输出练习
- C++之路进阶codevs1242(布局)
- 【SSH进阶】No result defined for action **的解决方案
- linux日志auditd,linux 审计工具auditd日志audit.log时间戳转换查看
- 【UOJ#450】【集训队作业2018】复读机(生成函数,单位根反演)
- VMware下Mac系统自适应屏幕
- 【oracle11g,17】存储结构: 段的类型,数据块(行连接、行迁移,块头),段的管理方式,高水位线...
- 简要分析JM8.6代码中foreman_part_qcif.yuv文件的YUV数据如何悄无声息地进入程序
- 解除ASP.net上传文件大小的限制