Written by Winlin, chundonglinlin
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。
要使用RTMP的HEVC,你必须:
首先,下载并编译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
Note: HEVC软件编码器性能太差,编不动,会导致卡顿。
现在,你可以使用H5播放器播放了,如下: http://localhost:8080/live/livestream.ts.
如果需要用HLS或HTTP-FLV播放,开启对应的SRS配置即可。
FFMpeg不支持RTMP的HEVC,但是一些维护者正在努力中了。你可以给FFmpeg打补丁,支持RTMP的HEVC,参考FFmpeg HEVC
SRS支持HEVC WebRTC,支持的是Safari浏览器,但SRS不支持RTMP转WebRTC,我们正在开发中了。
OBS HEVC软件编码器性能太差,编不动,会导致卡顿。
这篇文章介绍了如何用OBS推送HEVC RTMP流。
尽管还有一些工作要做,但是这是非常关键的进展了,HEVC更加完善了。
这文章是我们和Github Copilot一起写的。
往事如烟,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这个新标准,和国内通用的标准并不完全一样。
幸运的是,新标准是兼容老的以及国内定义的标准的,要支持起来也很容易。
好饭不怕晚。