Enhanced-rtmp推流与播流

更新时间:
复制为 MD 格式

本文介绍如何使用阿里云视频直播服务实现 Enhanced-RTMP 协议的推流和播流。

什么是 Enhanced-RTMP

Enhanced-RTMP 是对传统 RTMP 协议的扩展,解决了标准 RTMP 协议仅支持 H.264 编码的局限性。相比国内早期采用的自定义 CodecID 方案,Enhanced-RTMP 是国际开源社区制定的标准协议,已被 FFmpeg 6.1+ 和 OBS 29+ 等主流工具支持,具有更好的兼容性和扩展性。

通过 Enhanced-RTMP,您可以在直播推流和播流中使用 H.265(HEVC)、AV1 等新一代编码格式。协议规范请参见Enhanced-RTMP 协议规范

阿里云支持情况

阿里云视频直播已全面支持 Enhanced-RTMP 协议:

  • 推流端:已全量默认支持 H.265(HEVC)和 AV1 编码格式的推流。

  • 播放端:支持 H.265(HEVC)和 AV1 编码格式的拉流(需联系阿里云商务申请开启)。

  • 推流工具:OBS 29+ 和 FFmpeg 6.1+ 可直接使用。

说明

目前暂不支持 VP9 编码格式。

前提条件

在使用 Enhanced-RTMP 推流和播流前,您需要:

  • 已开通阿里云视频直播服务,并完成推流域名和播流域名配置。

  • 准备支持 Enhanced-RTMP 的推流工具:OBS Studio 29+ 或 FFmpeg 6.1+。

使用 OBS Studio 推流

OBS Studio 从 29 版本开始支持 Enhanced-RTMP 协议。以下介绍如何使用 OBS 推送 H.265 或 AV1 格式的直播流到阿里云。OBS详情请参见OBS Studio 官方项目

步骤一:配置视频编码器

打开 OBS Studio,进入设置 > 输出页面。

image

输出模式选择高级,并配置以下参数:

  • 视频编码器:根据需要选择 HEVC(H.265)AV1

  • 关键帧间隔:建议设置为 1 秒(不建议设置为 0)。

  • 码率:根据实际网络带宽和画质需求设置,H.265 编码相比 H.264 可降低约 30%-50% 的码率。

步骤二:配置推流地址

在 OBS 的设置 > 直播页面,配置推流地址:

OBS推流地址设置

  • 服务:选择"自定义..."

  • 服务器:填写 rtmp://推流域名/AppName/StreamName?auth_key=鉴权串

步骤三:开始推流

配置完成后,点击 OBS 主界面的开始推流按钮,即可将 H.265 或 AV1 格式的视频流推送到阿里云视频直播服务。

您可以在阿里云视频直播控制台的流管理页面查看推流状态和码率信息。

使用 FFmpeg 推流

FFmpeg 是强大的命令行音视频处理工具,从 6.1 版本开始支持 Enhanced-RTMP 协议。以下是使用 FFmpeg 推送 H.265 直播流的示例命令。FFmpeg详情请参见FFmpeg 官方项目

推送本地视频文件

ffmpeg -re -i input.mp4 \
  -c:v libx265 \
  -preset fast \
  -b:v 2000k \
  -g 30 \
  -c:a aac \
  -b:a 128k \
  -f flv \
  "rtmp://your-push-domain.com/AppName/StreamName?auth_key=xxx"

参数说明:

  • -re:按照原始帧率读取输入文件(模拟实时推流)

  • -c:v libx265:使用 H.265 编码器

  • -preset fast:编码速度预设(可选值:ultrafast、fast、medium、slow)

  • -b:v 2000k:视频码率设置为 2Mbps

  • -g 30:关键帧间隔(GOP),建议设置为帧率的 1-2 倍

使用 AV1 编码推流

如需使用 AV1 编码格式,将编码器参数改为:

ffmpeg -re -i input.mp4 \
  -c:v libsvtav1 \
  -preset 8 \
  -b:v 1500k \
  -g 30 \
  -c:a aac \
  -b:a 128k \
  -f flv \
  "rtmp://your-push-domain.com/AppName/StreamName?auth_key=xxx"

Enhanced-RTMP 播放

阿里云视频直播支持通过 Enhanced-RTMP 协议拉流播放 H.265 和 AV1 格式的直播内容。

说明

Enhanced-RTMP 播放需联系阿里云商务申请开启。

播放地址格式

使用 Enhanced-RTMP 格式播放直播流时,需要在播放 URL 中添加特定参数:

RTMP 协议播放

rtmp://your-play-domain.com/AppName/StreamName?is_enhanced_rtmp_play=on

HTTP-FLV 协议播放

http://your-play-domain.com/AppName/StreamName.flv?is_enhanced_rtmp_flv_play=on
说明
  • 如果不携带 is_enhanced_rtmp_playis_enhanced_rtmp_flv_play 参数,将默认使用国内标准格式(H.265 对应 codec_id=12,AV1 对应 codec_id=13)。

  • 推荐使用 Enhanced-RTMP 格式,以获得更好的兼容性和未来扩展性。