赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 对象存储
  4. 操作指南
  5. 数据处理
  6. 媒体处理
  7. 媒体处理参数
  8. 生成边转边播播放列表

生成边转边播播放列表

  • 媒体处理参数
  • 发布于 2025-04-21
  • 0 次阅读
文档编辑
文档编辑

生成边转边播播放列表能够对视频生成标准HLS协议的m3u8播放列表文件,无需提前生成TS文件就可立即播放且按播放进度动态转码。与传统离线转码相比,显著缩短了转码等待时间,且按需转码能大幅降低转码和存储成本。

功能简介

不同于视频转码需要在视频上传完成后等待整个视频转码完成才能播放,边转边播作为实时转码功能,可以实现原视频文件上传完成后立即开始播放,并在播放时仅对需要播放的视频片段进行转码。边转边播主要能为您带来:

  • 边播放边转码,播放无需等待。

  • 转码优化,秒级开播跳播,接近本地的播放体验。

  • 不播放不转码,即使转码文件删除也能重新转码,显著节省转码和存储成本。

  • 支持几十种转码参数,转码参数可高度自定义。

  • 兼容性高,支持300+种音视频格式。

使用场景

  • 网盘:用户上传视频后,网盘客户端根据网络情况选择分辨率播放,确保实时性和设备兼容性。冷视频未播放不转码,降低存储成本。

  • 聊天软件视频预览:在即时通讯或社交媒体中,视频发送完成后接收方可立即播放,提高实时性。历史聊天记录中的视频可定期清理,随时可立即播放。

  • 网络论坛与博客交流:在论坛和博客中分享视频时,使用边转边播技术,用户无需等待转码即可观看,保持流畅性和清晰度。

功能特性

边转边播的更多功能特性如下表所示。

特性

说明

标准化

  • 支持标准HLS协议。

  • 支持Media playlist以及支持生成Master playlist。

  • 支持多视频流、多语音流、多字幕流播放。

  • 支持主流的HLS播放器。

  • 支持300+种主流的音视频格式。

低成本

  • 未播放的视频及切片将不进行转码,以降低转码成本。

  • 转码生成的视频切片可以被删除,以节省存储成本。在重新播放时,系统能够自动触发新的转码,从而确保在线播放体验不受影响。

高效率

  • 大规模集群支持实时转码。

  • 提供多种分辨率和码率的视频流,以适应不同的网络环境,确保播放的流畅性。

  • 无需等待转码完成,生成播放列表后即可播放。

  • 视频头分片大小自适应,片头加载更高效。

  • 智能预转。

支持音视频格式列表

边转边播支持的音视频格式有300多种,几乎包含了所有常见的音视频格式。下面是边转边播支持的部分常见音视频格式。

输入视频格式

avi、mov、flv、mkv、webm、mpeg、wmv、rm、vob、ts等所有主流格式

输入音频格式

mp3、wav、aac、flac、wma等所有主流格式

输出容器格式

ts

前提条件

  • 已开通智能媒体管理(IMM)服务。具体操作,请参见开通产品。

  • 已绑定IMM Project。通过OSS控制台绑定的具体操作,请参见快速入门。通过API绑定的具体操作,请参见AttachOSSBucket - 绑定对象存储桶。

  • 生成播放列表需要使用到OSS的同步数据处理能力(x-oss-process)。请在OSS配额中心申请“开启新版本IMM Get数据处理能力”和“开启新版本IMM Post数据处理能力”。

  • 必须拥有IMM处理所需的相关权限。更多信息,请参见权限。

注意事项

  • 不支持匿名访问。

  • 更多注意事项请参见边转边播和生成边转边播播放列表。

参数说明

操作说明:hls/m3u8

具体参数如下表所示:

参数

类型

是否必须

描述

ss

int

否

生成播放列表的起始时间点,单位为毫秒(ms)。取值范围如下:

  • 0(默认值)或不填表示从源视频起始时间点开始。

  • 大于0表示从源视频所设置的时间点开始。

说明

通过与参数t一同设置可以对源视频的部分内容生成播放列表。

t

int

否

生成播放列表的转码时长。单位为毫秒(ms),取值范围如下:

  • 0(默认值)或不填表示持续到源视频结尾。

  • 大于0表示从生成播放列表的起始时间点持续所设置的时长。

说明

当设定参数所对应的时间点超过源视频结尾时,按默认值处理。

ta

int

否

触发边转边播时向前转码的ts文件数量。默认向前转码2分钟时长的视频。

示例:st为10000,则ta默认为12。您可以指定该参数控制异步向前转码的数量,取值范围为[10,30]。

st

int

否

单个ts文件的切片时长。单位为毫秒(ms),默认为10000,取值范围为[5000,15000]。

initd

int

否

生成播放列表时初始转码的时长,单位为毫秒(ms),默认值为30000。

  • 当所设置的时长为0时,不预转。

  • 当设置为负数或超过源视频时长时,将初始转码整段视频。

  • 当所设置的时长位于TS文件中间时,将持续转码到TS文件结束位置。

说明

该参数主要用于加快视频初次播放的等待时间,提升播放体验。若您需要替换传统VOD业务场景则可尝试初始转码整段视频。

vcodec

string

否

视频codec(编码格式)。取值:

  • h264(默认值):h264编码格式。

  • h265:h265编码格式。

fps

float

否

视频帧率,默认与源视频一致。

fpsopt

int

否

视频帧率选项。取值:

  • 0:始终使用目标帧率。

  • 1(默认值):源视频帧率小于fps时使用源视频帧率。

  • 2:源视频帧率小于fps时返回失败。

说明

该参数需要与参数fps一同设置。

pixfmt

string

否

像素格式,默认与源视频一致。取值范围如下:

  • yuv420p

  • yuv422p

  • yuv444p

  • yuv420p10le

  • yuv422p10le

  • yuv444p10le

s

string

否

输出视频的分辨率,格式为宽 x 高,默认与源视频分辨率一致。

  • 格式为w x h,即宽 x 高。

  • 宽和高的取值应为2的倍数,且取值范围为64~4096。例如:4096x4096、64x64等。

sopt

string

否

分辨率选项。取值:

  • 0:始终使用设置的目标视频分辨率。

  • 1(默认值):源视频分辨率面积小于设置的目标视频分辨率面积时使用源视频分辨率。

  • 2:源视频分辨率面积小于设置的目标视频分辨率面积时返回失败。

scaletype

string

否

缩放模式。取值范围如下:

  • stretch(默认值):固定宽高或长短边,强制缩放,拉伸以填满空白部分。

  • crop:等比缩放,缩放为延伸出指定宽高或长短边的矩形框外的最小分辨率,然后将超出的部分进行居中裁剪。

  • fill:等比缩放,缩放为指定宽高或长短边的矩形内的最大分辨率,然后使用黑色居中填充空白部分。

  • fit:等比缩放,缩放为指定宽高或长短边的矩形内的最大分辨率。

说明

该参数需要与参数s一同设置。

arotate

int

否

自适应分辨率方向。取值:

  • 0(默认值):关闭。

  • 1:打开。

vb

int

否

视频流码率,单位为比特每秒(bit/s)。

如果crf、vb都不填,则crf默认值是23;如果设置了vbopt,则vb参数必填。

vbopt

int

否

视频码率选项。取值范围如下:

  • 0:始终使用设置的目标视频码率。

  • 1(默认值):源视频码率小于设置的目标视频码率时使用源视频码率。

  • 2:源视频码率小于设置的目标视频码率时返回失败。

crf

float

否

指定恒定质量模式。与参数vb互斥,取值范围为[0,51],数值越大画质越差,建议取值范围为[18,38]。如果未填写crf、vb,默认值是23。

maxrate

int

否

动态码率下限定最大码率。使用该参数时,必须指定参数bufsize。

说明

该参数需要与参数crf一起使用才有效。

bufsize

int

否

动态码率下解码缓存大小,单位为比特每秒(bit/s)。

说明

该参数需要与参数crf一起使用才有效。

an

int

否

是否禁用音频流。取值:

  • 0(默认值):不禁用。

  • 1:禁用。

acodec

string

否

音频编码方式。取值为:acc。

ar

int

否

音频采样率。单位为赫兹(Hz)。默认保持源音频的采样频率。取值范围:

  • 8000

  • 11025

  • 12000

  • 16000

  • 22050

  • 24000

  • 32000

  • 44100

  • 48000

  • 88200

  • 96000

ac

int

否

声道数。默认保持源音频的声道数。取值范围:[1,8]。

aq

int

否

音频质量,与参数ab互斥,取值范围:0~100(值越大质量越高)。

ab

int

否

音频码率,与参数aq互斥,单位为比特每秒(bit/s)。取值范围:1000~10000000。

abopt

int

否

音频码率选项。取值:

  • 0:始终使用目标音频码率。

  • 1(默认值):源视频帧率小于ab时使用源视频码率。

  • 2:源视频帧率小于ab时返回失败。

说明

生成边转边播播放列表时也会用到sys/saveas参数。更多信息,请参见另存为。

使用步骤

使用边转边播分为以下两个步骤:

说明

生成播放列表之后,您也可以参考IMM文档的边转边播介绍来操作播放。

1. 将视频生成边转边播播放列表

转码信息

  • 转码前

    • 视频格式:AVI

    • 视频名称:oss://video-demo/example.avi

    • 视频起始位置:跳过前面15秒

    • 视频转码长度:1800秒

  • 处理方式:生成播放列表

  • 转码后

    • 转码分片大小:10秒

    • 预转视频长度:30秒

    • 视频信息

      • 视频流格式:H.264

      • 视频分辨率:1280x720

      • 视频帧率:25 fps

      • 视频码率:2 Mbps

    • 音频信息

      • 音频流格式:AAC

      • 音频码率:128 Kbps

    • 文件存储路径前缀:oss://outbucket/outobjprefix/media

请求示例

POST /example.avi?x-oss-process HTTP/1.1
Host: video-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS qn6q**************:77Dv****************

x-oss-process=hls/m3u8,ss_15000,t_1800000,vcodec_h264,fps_25,fpsopt_1,s_1280x720,sopt_1,scaletype_fit,arotate_1,vb_2000000,vbopt_1,acodec_aac,ar_44100,ac_2,ab_128000,abopt_1,st_10000,initd_30000|sys/saveas,o_b3V0b2JqcHJlZml4L21lZGlh,b_b3V0YnVja2V0

响应示例

HTTP/1.1 200 OK
Server: AliyunOSS
Date: Wed, 25 May 2022 12:43:57 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 161
Connection: keep-alive
x-oss-request-id: 628E2481184E20F26C000009
x-oss-transfer-acc-type: acc-none
x-oss-data-location: oss-cn-hangzhou-a
ETag: "D0F162350DA037F4DC2A142B2E116BD0"
Last-Modified: Wed, 25 May 2022 12:20:34 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 2040549661341440100
x-oss-storage-class: Standard
x-oss-server-time: 12437

{"Duration":1800,"RequestId":"********-37E6-5996-8425-********","VideoPlaylist":[{"FrameRate":"25","Resolution":"1280x720","Token":"f93c43079**********1269608ebc86e","URI":"oss://outbucket/outobjprefix/media.m3u8"}]}

2. 使用hls/sign签名边转边播

OSS对音视频数据的访问提供了动态签名机制,即只需在首次访问m3u8文件时在URL中添加x-oss-process=hls/sign,live_1, OSS将对返回的播放列表中的所有ts地址自动按照与m3u8完全相同的方式进行签名。

  • hls/sign签名方式:

# -*- coding: utf-8 -*-
import os
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 填写Bucket所在地域对应的Endpoint。请按实际情况填写。
endpoint = 'yourEndpoint'

# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# 目标Bucket名称。
bucket_name = 'your-oss-bucket-name'
# output/media.m3u8填写生成的播放列表名称。
key = 'output/media.m3u8'

# 指定Bucket实例,所有文件相关的方法都需要通过Bucket实例来调用。
# 必须使用oss2.AuthV2的签名方式。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', bucket_name)

# x-oss-process的处理方式为hls/sign,live_1。
params = {}
params.update({oss2.Bucket.PROCESS: 'hls/sign,live_1'})

# 签名URL。
# 生成签名URL时,OSS默认会对Object完整路径中的正斜线(/)进行转义,从而导致生成的签名URL无法直接使用。
# 设置slash_safe为True,OSS不会对Object完整路径中的正斜线(/)进行转义,此时生成的签名URL可以直接使用。
url = bucket.sign_url('GET', key, 7200, params=params, slash_safe=True)

# 生成的URL可以直接在HLS播放器中播放。
print(url)
  • 原始m3u8内容

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:10.0,
media-c14709808479b31566b50f2f8b93fe1a-0.ts
#EXTINF:10.0,
media-c14709808479b31566b50f2f8b93fe1a-1.ts
#EXTINF:10.0,
media-c14709808479b31566b50f2f8b93fe1a-2.ts
#EXTINF:10.0,
media-c14709808479b31566b50f2f8b93fe1a-3.ts
#EXT-X-ENDLIST
  • 使用hls/sign签名后返回的内容:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:10.000,
media-c14709808479b31566b50f2f8b93fe1a-0.ts?x-oss-process=if_status_eq_404{hls/ts,from_b3V0cHV0L21lZGlhLm0zdTg}&x-oss-expires=1710457284&x-oss-signature-version=OSS2&x-oss-access-key-id=****fEAub****&x-oss-signature=****VR3gy****
#EXTINF:10.000,
media-c14709808479b31566b50f2f8b93fe1a-1.ts?x-oss-process=if_status_eq_404{hls/ts,from_b3V0cHV0L21lZGlhLm0zdTg}&x-oss-expires=1710457284&x-oss-signature-version=OSS2&x-oss-access-key-id=****fEAub****&x-oss-signature=****VR3gy****
#EXTINF:10.000,
media-c14709808479b31566b50f2f8b93fe1a-2.ts?x-oss-process=if_status_eq_404{hls/ts,from_b3V0cHV0L21lZGlhLm0zdTg}&x-oss-expires=1710457284&x-oss-signature-version=OSS2&x-oss-access-key-id=****fEAub****&x-oss-signature=****VR3gy****
#EXTINF:10.000,
media-c14709808479b31566b50f2f8b93fe1a-3.ts?x-oss-process=if_status_eq_404{hls/ts,from_b3V0cHV0L21lZGlhLm0zdTg}&x-oss-expires=1710457284&x-oss-signature-version=OSS2&x-oss-access-key-id=****fEAub****&x-oss-signature=****VR3gy****
#EXT-X-ENDLIST

使用SDK

生成边转边播播放列表仅支持同步处理,SDK使用方法请参见使用SDK。

常见问题

输出文件包括哪些?

我们会根据您指定的输入路径前缀生成m3u8文件和ts文件。m3u8文件立刻生成。如果您指定了预转视频长度,会异步生成预转长度的ts文件(例如您指定的预转长度是30秒,切片长度为10秒,则生成3个ts文件)。未指定预转的部分会在视频播放时才会按需触发异步转码(例如1:视频从未播放,则不会对未指定预转的部分生成ts文件;例如2:视频从15分钟的地方开始播放,只会从15分钟的位置开始转码)。生成文件的目录树如下:

.
├── outobjprefix.m3u8
├── outobjprefix-92376fbb-171f-4259-913f-705f7ee02f2s-0.ts
├── outobjprefix-92376fbb-171f-4259-913f-705f7ee02f2s-1.ts
├── outobjprefix-92376fbb-171f-4259-913f-705f7ee02f2s-2.ts
├── outobjprefix-92376fbb-171f-4259-913f-705f7ee02f2s-3.ts

已经生成的ts文件手工删除后能正常播放吗?

可以。只要视频源文件和m3u8播放列表未被删除,手动删除ts文件后仍能正常播放,因为m3u8播放列表再次被请求时会触发重新生成ts文件。这种方式可以减少存储成本,不影响视频的重新播放。

能使用非边转边播的m3u8文件做边转边播吗?

不可以。非边转边播生成的m3u8文件不能用于边转边播。

相关文章

视频转码 2025-04-21 18:16

当您需要修改视频编码格式、降低分辨率和码率、转换封装格式、调整视频参数以适应不同需求,可以使用视频转码功能。 功能简介 视频转码通过将已压缩编码的视频码流转换为另一种视频码流,将视频格式、封装、分辨率、帧率及码率等参数转换为适合不同设备和平台播放,同时降低文件大小以优化传输效率的过程。

视频转动图 2025-04-21 18:16

您可以通过视频转动图功能,将视频转换为GIF、WebP等格式的动图。本文介绍视频转动图功能参数及示例。 使用场景 社交媒体分享:在社交媒体上,视频的关键片段常被转换成GIF分享,以便快速加载和生动地展示内容。 网络

视频截雪碧图 2025-04-21 18:16

视频截雪碧图(CSS Sprite或CSS Sprites)主要用于网站性能优化和前端开发。雪碧图是将多个小图标拼接成一张大图,通过CSS背景定位技术减少HTTP请求,提升网页加载速度和用户体验。您可以通过视频截雪碧图功能提取视频帧并拼接为雪碧图。本文介绍视频截雪碧图功能参数及示例。 注意事项

视频截帧 2025-04-21 18:16

您可以通过视频截帧功能,按一定规则提取多个视频帧并转换为需要的图片格式。本文介绍视频截帧功能参数及示例。 使用场景 视频编辑与制作:在视频剪辑中,需要从原始视频中截取某一帧作为静态图像,用于动态海报或预告片。 动画

视频拼接 2025-04-21 18:16

您可以通过视频拼接功能,将多个视频拼接为一个视频并转换为需要的格式。本文介绍视频拼接功能参数及示例。 功能简介 视频拼接是将多个视频片段合并为一个完整视频并转换为所需格式的能力。

视频信息提取 2025-04-21 18:16

您可以通过视频信息提取功能,获取媒体文件的封装与音视频流信息,例如:视频分辨率、帧率、音视频编码器类型、是否包含字幕流、视频时长、视频拍摄时间、视频画面宽度和高度等。 使用场景 视频监控:在安全监控系统中,使用OSS视频信息提取识别和跟踪人员、车辆及异常活动。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号