音视频切片
描述
音视频切片是七牛云存储提供的云处理功能,用于支持HTTP Live Streaming播放。 HTTP Live Streaming是由Apple提出的基于HTTP的流媒体传输协议。 它将一整个音视频流切割成可由HTTP下载的一个个小的音视频流,并生成一个播放列表(M3U8),客户端只需要获取资源的 M3U8 播放列表即可播放音视频。 以下用 HLS 代指 HTTP Live Streaming 。
使用
命令可以使用自己选择需要的参数,如:
自定义:avthumb/m3u8/vb/500k/t/10
命令的调用可以使用上传时指定persistentOps或者调用pfop命令
音视频切片接口规格
avthumb/m3u8/segtime/<SegSeconds>
/ab/<BitRate>
/aq/<AudioQuality>
/ar/<SamplingRate>
/r/<FrameRate>
/vb/<VideoBitRate>
/vcodec/<VideoCodec>
/acodec/<AudioCodec>
/ss/<SeekStart>
/t/<Duration>
/s/<Resolution>
/stripmeta/<StripMeta>
/rotate/<Degree>
/noDomain/<NoDomain>
/hlsKey/<HLSKey>
/hlsKeyType/<HLSKeyType>
/hlsKeyUrl/<HLSKeyUrl>
/pattern/<Pattern>
参数名称 | 类别 | 必填 | 说明 |
/segtime/<SegSeconds> |
A/V | 用于自定义每一小段音/视频流的播放时长,单位:秒,取值范围5-120秒,默认值为10秒。 | |
/ab/<BitRate> |
A | 静态码率(CBR),单位:比特每秒(bit/s),常用码率:64k,128k,192k,256k,320k等。 | |
/aq/<AudioQuality> |
A | 动态码率(VBR),取值范围为0-9,值越小码率越高。不能与上述静态码率参数共用。 | |
/ar/<SamplingRate> |
A | 音频采样频率,单位:赫兹(Hz),常用采样频率:8000,12050,22050,44100等。 | |
/r/<FrameRate> |
V | 视频帧率,每秒显示的帧数,单位:赫兹(Hz),常用帧率:24,25,30等,一般用默认值。 | |
/vb/<VideoBitRate> |
V | 视频比特率,单位:比特每秒(bit/s),常用视频比特率:128k,1.25m,5m等。 | |
/vcodec/<VideoCodec> |
V | 视频编码方案,支持方案:libx264,libvpx,libtheora,libxvid等。 | |
/acodec/<AudioCodec> |
A | 音频编码方案,支持方案:libmp3lame,libfaac,libvorbis等。 | |
/scodec/<SubtitleCodec> |
V | 字幕的编码方案,支持方案:mov_text, srt, ass等。该参数仅用于修改带字幕视频的字幕编码。 | |
/ss/<SeekStart> |
V | 指定视频截取的开始时间,单位:秒。用于视频截取,从一段视频中截取一段视频。 | |
/t/<Duration> |
V | 指定视频截取的长度,单位:秒。用于视频截取,从一段视频中截取一段视频。 | |
/s/<Resolution> |
V | 指定视频分辨率,格式为<width>x<height> 或者预定义值。 |
|
/stripmeta/<StripMeta> |
A/V | 是否清除文件的metadata,1为清除,0为保留。 | |
/rotate/<Degree> |
V | 指定顺时针旋转的度数,可取值为90 、180 、270 、auto ,默认为不旋转。 |
|
/noDomain/<NoDomain> |
A/V | 取值为0或者1,不设置的情况下为0。表示切片索引中的切片列表,是否使用相对地址,设置为1则使用相对地址,设置为0则使用绝对地址。 | |
/hlsKey/<HLSKey> |
A/V | AES128加密视频的秘钥,必须是16个字节 | |
/hlsKeyType/<HLSKeyType> |
A/V | 秘钥传递给我们的方式,0或不填: |
|
/hlsKeyUrl/<HLSKeyUrl> |
A/V | 秘钥的访问url | |
/pattern/<Pattern> |
A/V | 为各音视频流ts 文件自定义命名。因为一整个音视频流音视频切片后会生成一个M3U8播放列表和多个默认命名的音视频流 ts 文件。示例: avthumb/m3u8/pattern/eGlhb3hpYW8kKGNvdW50KQ== ,其中eGlhb3hpYW8kKGNvdW50KQ== 是自定义ts文件名如qiniu$(count) 的URL安全的Base64编码,其中$(count) 是必须存在的六位占位符数字串,qiniu 可以自己定义。最后得到类似qiniu000000 qiniu000001 ……qiniu000006 命名的ts文件。 |
示例
以预转持久化形式,将mp4视频按video_240k预设规格切片(15秒一片):
{ "scope": "qiniu-ts-demo:sample.mp4", "deadline": 1390528576, "persistentOps": "avthumb/m3u8/segtime/15/video_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 <AccessToken> bucket=qiniu-ts-demo &key=sample.mp4 &fops=avthumb%2Fm3u8%2Fab%2F320k%2Fr%2F24 ¬ifyURL=http%3A%2F%2Ffake.com%2Fqiniu%2Fnotify
注意:要在Authorization头部的
<AccessToken>
前添加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 "+/" "-_"
例子:
- 不使用rsa加密:
avthumb/m3u8/vb/640k/hlsKey/ZXhhbXBsZWtleTEyMzQ1Ng==/hlsKeyUrl/aHR0cDovL3p0ZXN0LnFpbml1ZG4uY29tL2NyeXB0MC5rZXk=
- 使用rsa加密:
avthumb/m3u8/vb/640k/hlsKey/SyyishA7ompSehjBHsq9EkBpbw6RfPnl49FOyMPoQZa4uxFlyHUCLxmXQ56F5WIteknZWahbqcdNx06pGBNk1zVBm5K6czZ_nCdy7y6PBon7NSUamoUPIGGBuevXOcyuc-4IpkmkcG3MWz7_Lop8zk98k8IVmKYCD_LMv-C_8D0=/hlsKeyType/1.0/hlsKeyUrl/aHR0cDovL3p0ZXN0LnFpbml1ZG4uY29tL2NyeXB0MC5rZXk=
如果有任何问题,请进入 七牛云存储问答社区 或者发送 工单 咨询