tencent cloud

文档反馈

如何对视频进行转码

最后更新时间:2023-05-15 17:15:06

    使用须知

    内容介绍

    本文档向开发者介绍如何对云点播(VOD)中的视频进行转码,以及如何获取转码后的输出结果。

    费用

    本文提供的代码是免费开源的,但在使用的过程中可能会产生以下费用:
    购买腾讯云云服务器(CVM)用于执行云 API 请求脚本,详见 CVM 计费
    消耗 VOD 存储用于存储上传的视频,详见 存储计费存储资源包
    消耗 VOD 转码时长用于对视频进行转码,详见 转码计费转码资源包
    消耗 VOD 流量用于播放视频,详见 流量计费流量资源包

    参数介绍

    腾讯云点播视频转码目前支持以下视频格式:
    参数
    类型
    详细说明
    输入格式
    封装格式
    WMV、RM、MOV、MPEG、MP4、3GP、FLV、AVI、RMVB、TS、ASF、MPG、WEBM、MKV 、M3U8、WM、ASX、RAM、MPE、VOB、DAT、MP4V、M4V、F4V、MXF、QT、OGG。
    视频编码格式
    AV1、AVS2、H.264/AVC、H.263、 H.263+、H.265、MPEG-1、MPEG-2、MPEG-4、MJPEG、VP8、VP9、Quicktime、RealVideo、Windows Media Video。
    输出格式
    封装格式
    视频:FLV、MP4、HLS(m3u8+ts)。
    音频:MP3、MP4、OGG、FLAC、m4a。
    图片:GIF、WEBP。
    视频编码格式
    H.264/AVC、 H.265/HEVC、AV1。
    转码的目标规格包含了编码格式、分辨率和码率等参数。云点播使用转码模板表示转码参数集合,通过转码模板,可以指定以下转码相关参数,请参见 视频处理综述
    分类
    参数
    说明
    视频编码
    编码方式(Codec)
    支持 H.264 、H.265以及 AV1 编码格式。
    码率(Bitrate)
    支持的视频码率范围:10kbps - 35Mbps。
    帧率(Frame Rate)
    支持的帧率范围:1fps - 60fps,常见的有24fps、25fps和30fps。
    分辨率(Resolution)
    支持宽度范围:128px - 4096px。
    支持高度范围:128px - 4096px。
    GOP 长度
    支持 GOP 长度范围:1秒 - 10秒。
    编码档次(Profile)
    当视频编码方式为 H.264 时,支持 Baseline、Main 和 High 的编码档次。
    当视频编码方式为 H.265 时,仅支持 Main 编码档次。
    颜色空间(Color Space)
    支持 YUV420P。
    说明:
    编码方式:指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。H.265 相比 H.264 则采用更先进的编码方式转码,在不损失原始画质的情况下显著降低码率,节省播放带宽。
    码率:编码器每秒编出的数据大小,单位是kbps,例800kbps代表编码器每秒产生800kb的数据。
    帧率(FPS):指每秒钟要多少帧画面。
    分辨率:单位英寸中所包含的像素点数。
    GOP:通常指两个I帧的间隔。
    对于普通转码,不同清晰度,推荐使用的码率、分辨率及设置区间如下表所示:
    清晰度
    推荐码率
    推荐分辨率
    分辨率区间
    标清
    600
    640x480
    标清 SD(短边 ≤ 480px)
    高清
    2000
    1280x720
    高清 HD(短边 ≤ 720px)
    全高清
    4000
    1920x1080
    全高清 FHD(短边 ≤ 1080px)
    2K
    6000
    2560x1440
    2K(短边 ≤ 1440px)
    4K
    8000
    3840x2160
    4K(短边 ≤ 2160px)
    腾讯云点播特有的极速高清集成了画质修复与增强、内容自适应参数选择、V265编码器等一整套视频处理解决方案。提供让视频更小更清晰的转码方式,能够保证网络资源低消耗,同时带给用户更佳的视觉体验。点播也预置了各种清晰度,具体参数如下:
    清晰度
    推荐码率
    推荐分辨率
    分辨率区间
    标清
    350或不设
    640x480
    标清 SD(短边 ≤ 480px)
    高清
    1350或不设
    1280x720
    高清 HD(短边 ≤ 720px)
    全高清
    2700或不设
    1920x1080
    全高清 FHD(短边 ≤ 1080px)
    2K
    3500或不设
    2560x1440
    2K(短边 ≤ 1440px)
    4K
    7500或不设
    3840x2160
    4K(短边 ≤ 2160px)
    说明:
    若不设,极速高清会根据视频源智能分析,智能设置视频最低码率。

    在控制台发起转码

    步骤1:开通云点播

    请参考 快速入门 - 步骤1 开通云点播服务。

    步骤2:上传视频

    参考 快速入门 - 步骤2 上传一个测试视频。单击 此处 查看本 Demo 使用的测试视频,对应的 FileId 是 3270835008936537687,如下图所示:
    
    
    
    说明:
    建议使用较短的视频文件进行测试(例如时长为几十秒的视频),避免转码过程耗时太长。

    步骤3:发起转码

    1. 在控制台 音视频管理 页面勾选新上传的测试视频,然后单击转码
    
    
    
    2. 在弹框中,处理类型选择“转码”,然后单击转码模板
    
    
    
    3. 选择所需的转码模板,然后单击确定。本 Demo 以系统预置模板 STD-H264-MP4-360P(模板 ID 100010)和 STD-H264-MP4-540P(模板 ID 100020)为例,如果开发者需要使用自定义的转码模板,请参考 模板设置文档
    
    
    
    4. 单击确定,发起转码。
    
    
    
    5. 在“任务中心”页面看到测试视频的状态为“已完成”,则表示音视频转码成功。
    

    步骤4:查看转码结果

    1. 在控制台应用管理 > 媒资管理 > 音视频管理 页面等待测试视频的状态变为“正常”,此时表示转码已完成。单击测试视频右侧的管理,进入视频管理页面。
    
    
    
    2. 在“基本信息”标签页下的“标准转码列表”中,转出了 STD-H264-MP4-360P 和 STD-H264-MP4-540P 两个规格。开发者可以单击右侧的预览直接观看视频,还可以单击复制地址复制转码视频的 URL,然后通过其它渠道发布给观众。
    
    
    

    调用云 API 发起转码

    步骤1:准备腾讯云 CVM

    云 API 请求脚本需要运行在一台腾讯云 CVM 上,要求如下:
    地域:任意。
    机型:官网最低配置(1核1GB)即可。
    公网:需要拥有公网 IP,带宽1Mbps或以上。
    操作系统:官网公共镜像Ubuntu Server 16.04.1 LTS 64位Ubuntu Server 18.04.1 LTS 64位
    购买 CVM 的方法请参见 操作指南 - 创建实例。重装系统的方法请参见 操作指南 - 重装系统
    注意:
    如果您没有符合上述条件的腾讯云 CVM,也可以在其它带外网的 Linux(如 CentOS、Debian 等)或 Mac 机器上执行脚本,但需根据操作系统的区别修改脚本中的个别命令,具体修改方式请开发者自行搜索。

    步骤2:获取 API 密钥

    请求云 API 需要使用到开发者的 API 密钥(即 SecretId 和 SecretKey)。如果还未创建过密钥,请参见 创建密钥文档 生成新的 API 密钥;如果已创建过密钥,请参见 查看密钥文档 获取 API 密钥。

    步骤3:开通云点播

    请参考 快速入门 - 步骤1 开通云点播服务。

    步骤4:上传视频

    参考 快速入门 - 步骤2 上传一个测试视频。单击 此处 查看本 Demo 使用的测试视频,对应的 FileId 为 243791581340253754,如下图所示:
    
    
    
    说明:
    建议使用较短的视频文件进行测试(例如时长为几十秒的视频),避免转码过程耗时太长。

    步骤5:发起转码

    1. 登录 步骤1 中准备好的 CVM(登录方法详见 操作指南 - 登录 Linux),在远程终端输入以下命令并运行:
    ubuntu@VM-69-2-ubuntu:~$ export SECRET_ID=AKxxxxxxxxxxxxxxxxxxxxxxx; export SECRET_KEY=xxxxxxxxxxxxxxxxxxxxx;git clone https://github.com/tencentyun/vod-server-demo.git ~/vod-server-demo; bash ~/vod-server-demo/installer/transcode_api.sh
    说明:
    请将命令中的 SECRET_ID 和 SECRET_KEY 赋值为 步骤2 中获取到的内容。
    2. 该命令将从 Github 下载 Demo 源码并自动执行安装脚本。安装过程需几分钟(具体取决于 CVM 网络状况),期间远程终端会打印如下示例的信息:
    [2020-06-15 20:39:56]开始安装 pip3。
    [2020-06-15 20:40:06]pip3 安装成功。
    [2020-06-15 20:40:06]开始安装云 API Python SDK
    [2020-06-15 20:40:07]API Python SDK 安装完成。
    [2020-06-15 20:40:07]开始配置 API 参数。
    [2020-06-15 20:40:07]API 参数配置完成。
    3. 执行process_media.py脚本发起转码:
    ubuntu@VM-69-2-ubuntu:~$ cd ~/vod-server-demo/transcode_api/; python3 process_media.py 243791581340253754
    说明:
    请将命令中的243791581340253754替换为 步骤4 中得到的实际 FileId。
    4. 该命令将对243791581340253754这个视频发起 ProcessMedia 请求,按 VOD 预置转码模板 100010和100020两个规格进行转码,并打印请求的应答内容:
    {"TaskId": "1400329073-procedurev2-f6bf6f01612369b6db30f2224792a2aft0", "RequestId": "809918fb-791c-4937-b684-5027ba6bc5f0"}

    步骤6:查看转码结果

    1. 在“任务中心”页面看到测试视频的状态为“已完成”,则表示音视频转码成功。
    
    
    
    2. 等待测试视频的状态变为“正常”,此时表示转码已完成。单击测试视频右侧的管理,进入视频管理页面。
    
    
    
    3. 在“基本信息”标签页下的“标准转码列表”中,转出了对应规格的视频。开发者可以单击右侧的预览直接观看视频,还可以单击复制地址复制转码视频的 URL,然后通过其它渠道发布给观众。
    
    
    

    上传视频后自动转码(任务流)

    VOD 有多种上传视频的方式,包括控制台上传、服务端上传、客户端上传和 URL 拉取上传等(详见 媒体上传综述)。各种上传方式均支持指定一个 任务流,在上传完成后自动触发转码。

    上传视频后自动转码(事件通知)

    VOD 后台在视频上传完成和转码任务完成后均会发起 事件通知 请求。开发者可以利用事件通知机制来对新上传的视频发起转码,也可以通过事件通知来自动获取转码结果(上文展示的方法是人工在控制台查看转码结果)。事件通知的使用方法在单独的最佳实践文档 接收事件通知 中有详细介绍。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持