复活RTMP:和OBS支持RTMP HEVC新标准

OBS 29.1支持RTMP的HEVC,所以你现在可以用OBS和SRS做HEVC的直播了。

现在,RTMP支持HEVC出新标准了,详见Enhanced RTMP。这个标准定义了一个新的codec ID,用于HEVC,即fourCC hvc1, OBS和SRS都支持这个标准。

Note: Please see #3495 and #3464 for details.

请注意,SRS 6.0之前已经支持HEVC(H.265)了,包括SRT,HTTP-TS,HLS,MPEG-DASH和WebRTC(Safari), 请参考H.265 Live Streaming Saving 50% Cost。

Prerequisites

要使用RTMP的HEVC,你必须:

  • 更新SRS到6.0.42+,或者使用最新的develop分支。
  • 使用OBS 29.1+。你可以从这里下载beta版本。
  • 对于H5播放器,SRS已经升级了mpegjs.js到1.7.3+
  • FFmpeg还不支持RTMP的HEVC,但是一些维护者正在努力中了。

Usage

首先,下载并编译SRS:

git clone http://gitee.com/ossrs/srs.git
cd srs/trunk
./configure --h265=on
make

然后,启动SRS,确保SRS的版本是6.0.42+:

./objs/srs -c conf/http.ts.live.conf

然后,使用OBS推流,设置如下:

  • • 服务器: rtmp://localhost/live
  • • 流密钥: livestream
  • • 编码:HEVC硬件编码

Note: HEVC软件编码器性能太差,编不动,会导致卡顿。

图片
图片

现在,你可以使用H5播放器播放了,如下: http://localhost:8080/live/livestream.ts.

如果需要用HLS或HTTP-FLV播放,开启对应的SRS配置即可。

What’s Next

FFMpeg不支持RTMP的HEVC,但是一些维护者正在努力中了。你可以给FFmpeg打补丁,支持RTMP的HEVC,参考FFmpeg HEVC

SRS支持HEVC WebRTC,支持的是Safari浏览器,但SRS不支持RTMP转WebRTC,我们正在开发中了。

OBS HEVC软件编码器性能太差,编不动,会导致卡顿。

Conclusion

这篇文章介绍了如何用OBS推送HEVC RTMP流。

尽管还有一些工作要做,但是这是非常关键的进展了,HEVC更加完善了。

这文章是我们和Github Copilot一起写的。

One More Thing

往事如烟,6年前给FFmpeg提过FFmpeg RTMP HEVC,但是当时FFmpeg社区说RTMP标准没有支持,所以FFmpeg也不支持。

FFmpeg: HEVC over FLV (and thus RTMP) is not defined nor supported. And unless Adobe specifies it, we should not support it. We have enough hacks inside FFmpeg as it is.

其实后来给Adobe写过邮件,问过是否RTMP会更新的问题。Adobe回复说正在考虑更新RTMP标准。这一考虑就是6年过去了,不过终于也支持了。

Note: 我联系了协议维护者veovera.org,原来这个协议的维护者是当年Flash的首席架构师,看来RTMP还能继续战斗几十年了。

比较可惜的是,RTMP HEVC这个新标准,和国内通用的标准并不完全一样。

幸运的是,新标准是兼容老的以及国内定义的标准的,要支持起来也很容易。

Written by Winlin, chundonglinlin

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论