# 媒体上传概述 媒体上传的实质是将媒体资源注册到视频点播服务,因此也是使用视频点播其它服务(媒资管理、媒体处理、分发播放等)的前提。本文描述媒体上传需要关注的媒体格式、上传方式、上传相关设置以及上传后的注意事项等。 ## 支持的媒体格式 视频点播支持视频、音频、图片、辅助媒资(水印、字幕、素材文件)等媒体文件上传。文件可以是本地文件也可以是网络文件(网络文件采用URL拉取上传)。各类型文件的详细格式支持情况请参见下表。 > **说明** > 上传时需要包含文件扩展名,大小写都支持,如MP4和mp4等同。 > > | **媒体类型** | **支持文件格式** | > |---|---| > | 视频 | * MPEG格式:MP4、TS、3GP、MPG、MPEG、MPE、DAT、VOB、ASF等。 * AVI格式:AVI。 * Windows Media Video格式:WMV、ASF。 * Flash Video格式:FLV、F4V。 * Real Video格式:RM、RMVB。 * QuickTime格式:MOV。 * Matroska格式:MKV。 * HLS格式:M3U8。 **说明** M3U8格式的文件,通过视频点播控制台上传时,仅支持URL拉取方式上传;对于本地M3U8文件,您可以通过视频点播API或SDK进行本地M3U8文件上传,上传方式请参见[通过视频点播API上传媒资文件](./通过视频点播API上传媒体文件.md)。 * 其它格式:DV、GIF、M2T、M4V、MJ2、MJPEG、MTS、OGG、QT、SWF、WEBM。 | > | 音频 | MP3、WMA、WAV、AAC、RA、M4A、FLAC、APE、AC3、AMR、CAF、ACM。 | > | 图片 | PNG、JPG、JPEG、GIF、HEIC。 | > | 辅助媒资 | * 水印文件:PNG、GIF、APNG、MOV。 * 字幕文件:SRT、ASS、STL、TTML、VTT。 * 素材文件:JPG、GIF、PNG、MP4、MAT、ZIP。 | > > **说明** > > 视频点播媒体上传仅支持上述媒体类型的文件。对于其他文件类型的上传操作,请遵循OSS上传文件中提供的步骤进行。 > > ## 上传方式 > > 视频点播针对不同用户场景,提供手动上传、程序集成自动化上传方式。 > > | | **上传方式** | **适用场景** | **使用说明** | > |---|---|---|---| > | 手动上传方式 | [通过视频点播控制台上传文件](./控制台上传.md) | 快速、便捷地将媒体资源上传到点播的场景。 **说明** 控制台由于安全策略,长时间上传可能会登录失效导致大文件上传失败,大文件建议使用PC客户端工具上传,能有效避免此问题。 | * 开通点播服务后,使用浏览器登录控制台即可进行上传。 * 针对音视频媒体,控制台支持本地文件上传,也支持URL拉取上传。 | > | 手动上传方式 | 通过Windows客户端上传文件 | 大文件、长时间上传,以及低门槛的运营场景。 | * 需要下载并安装点播客户端工具,目前仅支持Windows客户端。 * 仅支持本地文件上传。 | > | 程序集成 | [使用上传SDK上传文件](./使用上传SDK上传文件.md) | * 自动化上传、大批量迁移视频上传等场景。 * 网络媒体文件上传。 **说明** 推荐使用上传SDK。如果上传SDK支持的语言不满足要求,还可以使用OSS原生SDK完成上传。 | * 服务端上传SDK封装了视频点播内获取上传凭证及地址的逻辑和OSS的上传能力,仅需要简单配置就可以实现上传功能。 * 目前支持的开发语言包括:Java、Python、PHP、C/C++。 | > | 程序集成 | [使用OSS SDK上传文件](./使用OSS%20SDK上传文件.md) | * 自动化上传、大批量迁移视频上传等场景。 * 网络媒体文件上传。 | * 使用基于OSS原生SDK方式需要开发者用户自行实现所有上传逻辑,包括在点播服务获取上传地址和凭证、Base64解码上传凭证和地址和调用OSS能力完成上传。 * 目前支持的开发语言包括:Java、Python、PHP、.NET、Go、Node.js、C/C++。 **说明** Java、Python、PHP、C/C++语言推荐使用点播上传SDK。 | > | 程序集成 | [URL批量拉取上传](./URL批量拉取上传.md) | 文件没有存储在本地服务器或终端,需要通过公网访问的URL地址上传的场景。 | * 仅支持上传到华东2(上海)和新加坡地域。 * 不适用于本地文件上传。 | ### **上传方式支持的功能对比** 各上传方式支持上传时功能设置的详情如下: | **分组** | **详细功能** | [控制台](./控制台上传.md) | PC端上传工具 | [上传SDK(服务端)] | [上传SDK(客户端)] | [URL批量拉取上传](./URL拉取上传.md) | [使用OSS SDK上传文件](./使用OSS%20SDK上传文件.md) | [基于OSS API上传](./OSS文件上传.md) | |---|---|---|---|---|---|---|---|---| | 媒资管理 | 设置媒体标题 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | |---|---|---|---|---|---|---|---|---| | 媒资管理 | 指定媒体分类 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | |---|---|---|---|---|---|---|---|---| | 媒资管理 | 设置媒体标签 | 不支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | |---|---|---|---|---|---|---|---|---| | 媒资管理 | 设置视频封面 | 不支持 | 不支持 | 支持 | 支持 | 支持 | 支持 | 支持 | |---|---|---|---|---|---|---|---|---| | 音视频转码^①^ | 转码模板组 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | |---|---|---|---|---|---|---|---|---| | 音视频转码^①^ | 工作流 | 支持 | 不支持 | 支持 | 支持 | 支持 | 支持 | 支持 | |---|---|---|---|---|---|---|---|---| | 音视频转码^①^ | 不转码 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | |---|---|---|---|---|---|---|---|---| | 上传控制^②^ | 获取上传进度 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | |---|---|---|---|---|---|---|---|---| | 上传控制^②^ | 断点续传 | 不支持 | 不支持 | 仅Java上传SDK支持 | 支持 | 不支持 | 仅Java语言支持 | 不支持 | |---|---|---|---|---|---|---|---|---| | 上传控制^②^ | 分片上传 | 默认启用 | 默认启用 | 默认启用 | 默认启用 | 默认启用 | 默认启用 | 默认启用 | 音视频转码^①^ 上传音视频文件时设置转码(通过指定转码模板组或指定工作流),上传完成后自动触发转码。也可以设置不转码,但需要注意的是目前仅以下格式支持不转码直接播放:MP4、FLV、M3U8、MP3、WEBM。 * 指定转码模板组转码:指定转码模板组是点播的默认处理方式,上传时选择转码模板组处理方式。上传完成后点播系统会自动触发转码。 * 指定工作流转码:创建好含转码任务的工作流后,上传时选择工作流处理方式。上传完成后,点播系统会自动执行指定的工作流完成转码任务。 * 不转码:如果上传时不需要转码,可通过选择转码模板组中的不转码模板实现。 上传控制^②^ * 分片上传:将待上传的文件分成多个碎片(Part)分别上传,上传完成之后将这些Part组合成一个Object。视频点播上传功能默认采用分片上传的方式上传文件。 > **说明** > 使用分片上传时,若上传失败则可能会产生碎片文件,一般7天后会自动清除。开发者用户还可以调用[删除上传中的碎片文件](./删除上传中的碎片文件.md)接口手动清除碎片文件。 > > * 获取上传进度或状态。 > > * 断点续传:如果上传过程中出现网络错误导致上传失败,视频点播支持从最后一块成功上传的碎片(Part)开始继续上传,从而实现断点续传效果。 > > **说明** > > 上传SDK(客户端)内部会完成断点续传的功能,用户不需要关心任何断点和片段恢复,因为异常情况导致的视频上传失败重新上传都会从断点处开始上传。 > > ## 存储说明 ### 存储地域 视频点播基于阿里云对象存储OSS(Object Storage Service)提供媒体资源存储服务。视频点播的存储节点遍布全球,每个存储节点为一个存储地域,每个存储地域由点播系统分配一个存储地址。 ### 存储地址 > **说明** > 视频点播默认同一账号不同地域数据不互通,上传文件前请确认您的上传地域和实际业务地域一致,否则可能导致找不到文件。 > > | **存储地址设置** | **说明** | > |---|---| > | 启用点播系统存储地址 | 开通视频点播服务后,不同的服务地域会默认分配一个独立的存储Bucket(类型为点播系统Bucket),通过启用该Bucket,无需其他配置即可进行上传和媒体资源管理。详情请参见[管理存储Bucket](../媒资管理/管理存储Bucket.md)。 | > | 添加新地址 | 支持将自有的OSS Bucket添加到视频点播服务中,以实现对存储在OSS Bucket中的媒体文件进行转码、截图、播放等操作。详情请参见[管理存储Bucket](../媒资管理/管理存储Bucket.md)。 | > | 修改默认地址 | 启用多个存储地域的存储地址或添加多个存储地址后,可修改默认存储地址。上传文件时可以指定存储地址或不指定存储地址,不指定时点播系统将选用默认存储地址。详情请参见[管理存储Bucket](../媒资管理/管理存储Bucket.md)。 | > > 视频点播支持的存储地域及对应的存储地域标识如下。 > **说明** > > 使用视频点播控制台或PC端上传工具上传时根据登录(或选择)的地域使用存储地址。使用SDK或API上传时,可通过参数(如[URL拉取上传](./URL拉取上传.md)接口的`StorageLocation`参数)指定存储地址。 > > | **存储地域** | **存储地域标识** | > |---|---| > | 华东2(上海) | cn-shanghai | > | 华北2(北京) | cn-beijing | > | 华南1(深圳) | cn-shenzhen | > | 中国香港 | cn-hongkong | > | 日本(东京) | ap-northeast-1 | > | 新加坡 | ap-southeast-1 | > | 印度尼西亚(雅加达) | ap-southeast-5 | > | 德国(法兰克福) | eu-central-1 | > | 美国(硅谷) | us-west-1 | ### 存储计费 视频点播存储服务支持按量付费(后付费)和资源包(预付费)两种付费方式。 * 按量付费详情请参见[媒资存储计费](../计费/基础服务计费.md)。 * 资源包详情请参见[视频点播存储包](../计费/资源包.md)。 ## 上传事件通知 在媒体文件上传完成后,可通过事先配置的回调地址及时获取处理进展和状态。视频点播支持HTTP回调(兼容HTTPS)、MNS回调两种方式获取事件通知。了解回调配置请参见[事件通知](../事件通知/事件通知_3.md)。完成回调配置请参见[回调设置](../事件通知/回调设置.md)。所有上传方式均支持上传事件通知。上传相关的事件如下表所示。 > **说明** > 关于每个事件的内容详情,请参见[事件详情]。 > > | **事件名称** | **事件类型** | **说明** | > |---|---|---| > | 视频上传完成 | FileUploadComplete | 点播服务端接收完上传的音视频文件后,会产生FileUploadComplete事件。 **说明** 对于不转码的音视频(或音频)接收到视频上传完成事件通知后方可获取播放地址播放。 如果上传时设置了不转码,接收到视频上传完成事件通知后,还可再调用[提交媒体转码作业](../API参考/提交媒体转码作业.md)接口转码。 如果上传时设置了不转码,接收到视频上传完成事件通知后,还可再调用[提交媒体转码作业](../API参考/提交媒体转码作业.md)接口转码。 | > | 图片上传完成 | ImageUploadComplete | 点播服务端接收完上传的图片文件上传后,会产生ImageUploadComplete事件。 | > | 辅助媒资上传完成 | AttachedMediaUploadComplete | 点播服务端接收完上传的辅助媒资文件后,会产生AttachedMediaUploadComplete事件。 | > | URL上传视频完成 | UploadByURLComplete | 调用[URL批量拉取上传](./URL拉取上传.md)任务后,云端拉取视频上传完成会产生UploadByURLComplete事件。 | > | 单个清晰度转码完成 | StreamTranscodeComplete | 视频的某个清晰度、某种格式的流(如:标清的MP4格式)转码完成时会产生此事件。 **说明** 对于转码的音视频,接收到单个清晰度转码完成事件通知后方可获取播放地址播放。未收到回调前播放可能会导致播放失败。 | > | 视频转码完成 | TranscodeComplete | 视频所有流转码完成会产生TranscodeComplete事件。 **说明** 若要确保播放前所有清晰度都能获取到,可接收到视频转码完成事件通知后再处理。未收到回调前播放可能会导致播放失败。 | > > ## 上传授权 > > 在开发上传场景下,通过上传凭证和STS方式都能解决上传中的授权和安全问题,防止媒体文件被恶意上传和播放。 > > * 两种方式的适用场景请参见[凭证方式与STS方式对比](../安全与访问控制/凭证方式与STS方式对比.md)。 > > * 具体使用请参见各开发者上传方式的操作文档。 > > * [上传SDK(服务端)] > > * [上传SDK(客户端)] > > * [URL批量拉取上传](./URL拉取上传.md) > > * [使用OSS SDK上传文件](./使用OSS%20SDK上传文件.md) > > * 自2024年01月31日起,视频点播将不再支持通过OSS Header x-oss-object-acl的方式修改文件权限,可有效避免您直接上传公共读的文件从而导致您的媒体资源外泄或被恶意访问导致费用激增等问题。在此之前,您可以通过下述权限管理的方法来限制上传公共读文件到点播的OSS自有Bucket中的行为,具体方法如下: > > 1. 授权视频点播服务访问您的OSS等资源,可点击[云资源访问授权页面](https://ram.console.aliyun.com/role/authorization?request=%7B%22Services%22%3A%5B%7B%22Service%22%3A%22VOD%22%2C%22Roles%22%3A%5B%7B%22RoleName%22%3A%22AliyunVODDefaultRole%22%2C%22TemplateId%22%3A%22DefaultRole%22%7D%5D%7D%5D%2C%22ReturnUrl%22%3A%22https%3A%2F%2Fvod.console.aliyun.com%2F%22%7D)进行授权。 > > 2. 创建 **禁止上传Object ACL权限为公共读的文件到OSS自有Bucket中** 的自定义权限策略,具体操作及权限策略内容请参见[禁止上传Object ACL权限为公共读的文件到OSS自有Bucket中](../API参考/创建自定义权限策略.md)。 > > 3. 为 **AliyunVODDefaultRole** 角色授予上一步创建的 **禁止上传Object ACL权限为公共读的文件到OSS自有Bucket中** 的权限 **。** > > 登录[RAM控制台](https://ram.console.aliyun.com/?spm=a2c4g.11186623.0.0.c1e25316g2bZHy "")进行授权,具体操作请参见为RAM用户授权。 > > ![image.png](../images/p747479.png) > > ## 上传加速 > > 视频点播服务提供上传加速的功能,以提升远距离文件传输和GB、TB级大文件的上传性能。上传加速适用于跨区域(如跨海情况)上传,例如在中国内地将视频上传到新加坡存储地域的存储地址。 > > **开通方式** > > 开通上传加速功能需[提交工单],您需要提供 **阿里云账号UID** 和需要使用上传加速的 **存储地址。** > > **计费说明** > > 上传加速是点播的增值功能,按使用情况收费。具体计费详情,请参见[存储传输加速计费](../计费/增值服务计费.md)。 > **说明** > > 只开通不使用不收费。 > > **使用限制** > > 仅[通过视频点播控制台上传文件](./控制台上传.md)不支持加速,其他上传方式均支持。 > > ## 后续操作 > > **说明** > > 媒体资源上传到视频点播之后,根据业务处理的情况和阶段不同,会处于不同的媒体状态。处于不同媒体状态的音视频等媒体资源在视频点播中可以执行的操作不同,例如:处于上传中、上传失败、屏蔽状态的音视频仅可以删除,无法进行其他操作,即无法发起转码处理、视频截图、媒资审核等操作;而处于正常状态的音视频可以进行所有操作,包括发起转码处理、视频截图、媒资审核、播放等其他操作。有关媒体状态的详细信息,请参见[Status:视频状态](../API参考/基本数据类型.md)和[Status:图片状态](../API参考/基本数据类型.md)。 > > 媒体上传完成后可使用的视频点播服务及后续分发播放的注意事项如下: > > | **点播服务** | **描述** | **相关文档** | > |---|---|---| > | 媒资管理(上传后) | 上传完成后,可使用点播服务管理媒体文件,如视频源文件、转码后的流文件、图片文件等。 | [媒资管理] | > | 媒体处理 | 点播支持媒体文件上传后的音视频转码、智能审核、云剪辑、AI处理等。 **说明** 上传到点播存储的音视频文件会默认提取Meta信息(如视频分辨率、时长、码率等),对视频也会默认截取封面图和雪碧图,且这部分预处理完全免费。 | [媒体处理] | > | 音视频播放 | 用户上传音视频完成后,并不代表音视频已准备就绪,还需点播服务端确认接收完成,可根据事件通知来确定上传的音视频何时能播放。 * 对于不转码的音视频(或音频)接收到视频上传完成事件通知后即可获取播放地址播放。 * 对于转码的音视频,接收到单个清晰度转码完成事件通知后即可获取播放地址播放。若要确保所有清晰度都能获取到,可接收到视频转码完成事件通知后再处理。 | * 获取[视频上传完成](../事件通知/视频上传完成.md)等事件通知。 * 调用[获取音视频播放地址](../音视频播放/GetPlayInfo - 获取音视频播放地址.md)。 |