文档中心 云直播 最佳实践 直播转封装及转码

直播转封装及转码

最近更新时间:2019-08-06 16:08:49

直播转封装功能

直播转封装功能,是指将直播现场推送出来的原始流(一般使用 RTMP 协议推送到云端),在云端转换为不同的封装格式的视频流推送给观众,同时支持输出纯音频或者纯视频功能,也支持各种不同的 DRM 加密方案,以满足数字版权保护的需求。

支持的输出封转格式

  • RTMP
  • FLV
  • HLS
  • DASH
  • HDS
  • TS 流

支持选择指定媒介输出

  • 纯音频输出:即删除视频媒介,只输出音频媒介,封装格式如前文所述。
  • 纯视频输出:即删除音频媒介,只输出视频媒介,封装格式如前文所述。

支持的媒体加密方案

  • Fairplay
    HLS 封装支持 Apple fairplay drm 解决方案。
  • Widevine
    DASH 封装支持 Google widevine drm 解决方案。
  • HLS 通用 Aes-128 加密
    HLS 封装支持使用通用的 Aes-128 的加密方案。

直播转码功能

直播转码功能(包含视频转码和音频转码),是指将直播现场推送出来的原始流,在云端转换为不同编码格式、不同分辨率、不同码率的转码流推送给观众,以满足不同网络环境、不同终端设备等各种场景下的播放需求。

直播视频转码典型应用场景举例

  • 将原始视频流转换为不同清晰度的转码流,用户可以根据自己的网络情况选择不同码率的视频流进行播放,以保证播放的流畅性。
  • 将原始视频流中打上官方自定义水印,给视频加上独有的标志,以标明版权,也可以起到宣传推广的效果。
  • 将视频流转换为编码压缩率更优的视频编码格式,例如某一条原始编码格式为 H264 的视频流,在观看的人数比较大的情况下,可以尝试将原始 H264 的视频流转换为压缩率更高的 H265 视频流,从而能够达到节省带宽,节约成本的效果。
  • 将原始视频流转化为不同的编码格式,以适应特殊终端的播放需求,例如有些特殊场景下解码 H264 视频由于性能问题无法达到实时播放的体验,需要将原始 H264 流转换为 Mpeg 编码格式的视频,从而达到终端实时解码播放的体验。

视频转码参数介绍

  1. 视频编码方式,支持以下视频编码格式:

    • H264
    • H265
  2. 视频编码档次,支持以下三种编码档次:

    • Baseline
    • Main
    • High
  3. 视频编码码率

    • 支持视频输出码率范围:50kbps - 10Mbps。
    • 支持当指定输出码率大于输入原始码率时,输出码率保持为原始码率。例如指定输出码率为3000kbps,但是原始输入流的码率只有2000kpbs,这种情况下可以保持输出码率为2000kbps。
  4. 视频编码帧率

    • 支持视频输出帧率范围:1fps - 60fps。
    • 支持当指定输出帧率大于输入原始帧率时,输出帧率保持为原始帧率。例如指定输出帧率为30fps,但是原始输入流的帧率只有20fps,这种情况下可以保持输出帧率为20fps。
  5. 视频分辨率

    • 支持宽度范围:128 - 4096。
    • 支持高度范围:128 - 4096。
    • 支持单独指定宽度,高度依照宽度等比例缩放。
    • 支持单独指定高度,宽度依照高度等比例缩放。
  6. 视频 GOP 长度

    • 支持视频 GOP 长度范围:1秒 - 10秒,一般建议2秒 - 4秒。
  7. 视频码率控制方法,支持如下两种码率控制方法:

    • 固定比特率(CBR)。
    • 动态比特率(VBR)。
  8. 视频画面旋转,支持将原视频画面顺时针旋转3个角度:

    • 顺时针旋转90度。
    • 顺时针旋转180度。
    • 顺时针旋转270度。

音频转码参数介绍

  1. 音频编码方式, 支持以下编码规格:

    • AAC-LC
    • AAC-HE
    • AAC-HEV2
  2. 音频采样率, 支持以下常用采样率,常用的采样率为48000和44100

    • 96000
    • 64000
    • 48000
    • 44100
    • 32000
    • 24000
    • 16000
    • 12000
    • 8000
  3. 音频编码码率
    音频支持码率范围:20kbps - 192kbps,常用音频码率如下:

    • 48kbps
    • 64kbps
    • 128kbps
  4. 音频声道数, 音频支持以下声道数:

    • 单声道
    • 双声道

视频转码常用预设模板

模板名称 视频分辨率 视频码率 视频帧率 视频编码格式
流畅 550 按比例缩放 * 540 550kpbs 23 H264
标清 900 按比例缩放 * 720 900kpbs 25 H264
高清 2000 按比例缩放 * 1080 2000kpbs 25 H264
超清 3000 按比例缩放 * 1080 3000kpbs 30 H264

直播添加水印功能介绍

视频流添加水印功能,指的是在原始流的基础上,给视频画面添加上各种预设好的标志图片,给视频加上独有的标志,以标明版权,也可以起到宣传推广的效果。

水印相关参数

  1. 水印的主要参数包括水印位置和水印大小,水印位置和大小由参数 type、x_position、y_positon、width 和 height 决定的,各参数含义如下:
    • type:表示以下四个参数的计算方式,0表示为像素绝对值,1表示为百分比。
    • x_position:表示水印左侧和视频左侧边沿的距离。
    • y_positon:表示水印顶部和视频顶部边沿的距离。
    • width:表示水印图片的宽度。
    • height:表示水印图片的高度。

  1. 水印参数计算方式 type 字段介绍
    type 字段表示参数 x_position、y_position、width 和 height 的计算方式:
    • type = 0,表示以像素为单位进行计算位置和长宽。
      这种方式指定了水印大小的绝对值,也指定了水印位置相对于视频左侧边沿和顶部边沿的绝对位置。
    • type = 1,表示以相对视频输出画面的宽度或者高度的百分比进行计算,即:
      x_position 和 width 以输出视频宽度的百分比来计算。
      y_position 和 height 以输出视频高度的百分比来计算。
      当只指定 width,不指定 height,根据水印的高宽比,计算出 height。
      当只指定 height,不指定 width,根据水印的高宽比,计算出 width。

注意:

当一个流启用了多种码率转码时(即一路原始流转化为多种分辨率的转码流),这种情况下需要添加水印,建议使用百分比的计算方式,这样可以使得水印相对位置和大小比例在不同码率的场景下是相同的。

水印参数例子

视频输出画面为1920x1080,水印大小为 320x240,使用百分比计算方式(即 type = 0),x_position = 5,y_position = 5,width=10。
根据视频输出画面的分辨率计算出水印的绝对位置和大小如下:

x_position_pixel = 1920 * 5% = 96
y_position_pixel = 1080 * 5% = 54
width_pixel = 1920 * 10% = 192
height_pixel = 192 * 240 / 320 = 144

因此,水印位置距离视频视频画面左边沿为96像素,距离视频输出画面上边沿为54像素,水印大小为192像素 * 144像素。

转码参数设置使用方法

使用方法概述

设置转码参数可以通过两种方式来实现,一种是通过控制台页面来实现,另一种是通过服务端 API 来实现。不管使用哪一种方式,主要涉及水印模板、转码模板、转码规则的相关操作。

  • 水印模板的操作,主要用来设置水印相关参数,并生成一个对应的水印模板 ID。
  • 转码模板的操作,主要用来设置转码相关参数,另外也可以通过水印模板 ID 来关联起一个水印模板(也可以不关联水印模板),也可以直接使用前文中已经预设好的常用转码模板。每一个转码模板都有对应一个唯一转码模板名称,转码模板名称作为播放转码流的唯一标识,把转码模板名称添加到播放拉流地址中流 ID 名称的后面,就可以拉取到对应各种转码模板的转码流。
    播放地址 = 播放域名 + 播放路径 + 流 ID 名称_转码模板名称 + 鉴权串
  • 转码规则的操作,主要用来控制某个域名或者某条流启用某个转码模板,只有创建了转码规则,对应的播放域名拉取相应的转码模板才能生效。若没有创建转码规则,直接使用转码模板名称拼接的拉流地址是无效的。

使用方法举例

定义水印模板如下:

水印模板 ID type x_position y_position width height 其他水印参数
1 1 5 5 10 5 ----

定义转码模板如下:

转码模板名称 转码模板名称 视频帧率 视频码率 其他转码参数 水印模板 ID
1 sd 25 900 ---- 1
2 hd 30 3000 ---- 1

定义转码规则如下:

播放域名 播放路径 流 ID 转码模板 ID
liveplay.tcloud.com live N/A 1
liveplay.tcloud.com live N/A 2

对于一个推流,流 ID 为 1234_test,通过以下3个地址可以播放不同码流的流:

  • 原始流
    http://liveplay.tcloud.com/live/1234_test.flv?鉴权串
  • 标清转码流(带水印)
    http://liveplay.tcloud.com/live/1234_test_sd.flv?鉴权串
  • 高清流转码流(带水印)
    http://liveplay.tcloud.com/live/1234_test_hd.flv?鉴权串

使用接口

  1. 通过控制台管理转码模板
    控制台支持查询、添加、修改和删除转码模板。

  2. 通过服务端 API 管理转码模板