New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Since streaming in HEVC codec has been officially supported by Bilibili, maybe it's time to add support to HEVC codec. #470
Comments
直接报错退出是比较简单的解决方法,之前因为没有检查视频编码格式出现了内存占用过高崩溃的问题。不支持 HEVC 的原因主要有:
不支持的原因是录播姬的数据修复部分要解析 FLV 数据进行处理。 目前B站 FLV 直播流的稳定性和质量很差,录制效果很不好,之后考虑开发 HLS 录制并作为主要录制方法。 关于录制自己的直播:推荐使用 OBS 自带的录制功能,目前B站直播服务器的稳定程度比较差,录制效果不好。 关于 SRT (TS) 推流:目前B站直播使用 OBS SRT 协议推流的时候经常会遇到缺帧的问题,音频视频都会缺,通常是 60 FPS 变成 57-58 FPS。视频会每 1-2 秒顿一下、音频也会同步卡顿一下,遇到之后比较明显,浏览器console里也会有调试信息输出,建议多注意一下。 |
你提到 FLV 标准不支持 HEVC,这点我刚刚确实没有考虑到,我以为处理起来就像用 ffmpeg 混流一样简单快速,或至少可以借鉴其他开源项目的代码,没想到 ffmpeg 都不支持;但是既然 B 站直播在使用 HEVC FLV 这种文件,我很好奇实现解析 HEVC FLV 数据的工作量,以及如果工作量不太大,有没有可能在后续版本加入这个特性 P.S. 我倒是想通过PR来做些贡献,奈何我确实不太会C#,只能做伸手党了,十分抱歉 |
文件结构上区别不大,给录播姬加支持应该不需要太多改动,回头可以改一下试试看。 |
金山有魔改版的ffmpeg |
OBS 已支持 HEVC RTMP 推流 obsproject/obs-studio#8522 |
@cxumol 看了一下 enhanced-rtmp-v1.pdf 和对应的 PR,它的实现方式和目前国内厂商的实现方式不一样(更巧妙更合理一点) 现在国内各云服务商、直播平台 HEVC FLV/RTMP 是直接用 12 作为 video codec id,其他不变。这个是违反标准的(或者说是与标准不兼容的?),也是为什么 ffmpeg 不支持这样搞的原因。 国内各个云服务商、直播平台定义的 HEVC over RTMP 协议和 OBS 新加的、enhanced rtmp 定义的这个协议不兼容。 说回来我认为B站直播现在支持 HEVC 也只是凑巧因为用 SRT 协议推流的时候能推上去,并且现有的直播服务器系统支持它 (比如像 https://github.com/ossrs/srs ),并不是专门作为一个受支持的 use case 实现的。
目前我看 ffmpeg master branch 里还没有支持 enhanced rtmp,可能是他们还没发布出来或还没被合并。 |
2023年3月29日 21点37分 OBS 29.1.0-beta1 HEVC over RTMP 推流侧B站成功,但播放端无法播放,CDN返回404 |
@cxumol 这是直接用 |
支持加一 非常希望尽快采用高效编码节省空间占用 两块8T硬盘空间已经告急了 |
@Ricky2576 这个issue讨论的是关于录播姬对HEVC直播流的支持的相关问题,和你的需求并不符合。录播姬的原理是从B站抓取直播流、简单处理后直接存储,并不会对进行重新编码,这意味着录播姬以高效编码保存录播的前提是主播以高效编码向B站推流,而目前真正以HEVC推流的主播其实是非常少见的。因此,即使录播姬支持了这个特性,除非你是在用录播姬录制自己的直播,或有能力要求主播改变推流配置,否则这其实并不能节约你的磁盘占用 |
感谢解释
|
1.HEVC直播问题 |
FLV codec 12 的可以用录播姬的原始数据模式录,直播服务器发的数据原样写到硬盘。 HLS FMP4 本身原生就支持 HEVC,录播姬之后加了 HLS 支持之后也自然直接就支持 HEVC。现在录 HLS 的话个人推荐是用 https://github.com/acgnhiki/blrec 自己直播自己录的情况强烈推荐使用直播软件自带的录制功能,效果绝对比从B站绕一圈好不知道多少倍。如果有其他限制无法在推流设备上录制,可以考虑自建直播服务器转发一下然后在转发服务器上另存一份文件,效果也会比从B站录要好。 |
我这边最近也通过其他信息渠道知晓了使用直播软件自带的录制功能,列如OBS既可以使用HEVC录制也可以使用直播编码器(直播预设),很方便也不吃配置,还能分大小和时间段进行分割文件. |
Problem
Previously, though Bilibili will lively encode source stream to HEVC as a default quality choice (such as 超清PRO), streaming in HEVC directly to Bilibili is unavailable. However, I tried streaming in HEVC lately, and tested to play it on platforms as many as possible, and everything on all my platforms seems right. But when I was trying to record it with BililiveRecorder, all I got is a warning:
[StandardRecordTask] 不支持此直播流的视频编码格式(只支持 H.264),本场直播不再自动启动录制。BililiveRecorder.Flv.Parser.UnsupportedCodecException: Unsupported Video Codec: 12
.标题:考虑到B站官方已经支持了通过HEVC编码进行直播,也许是时候加入HEVC编码的支持了。
先前,尽管B站会实时把直播流转码到HEVC作为一个默认画质选项(例如“超清PRO”),但是直接用HEVC编码推流到B站是不可行的。然而,最近我尝试了通过HEVC直播,并在尽可能多的平台进行了播放测试,一切看起来都是正常的。但是当我尝试用录播姬录制它的时候,我收到了警告:
[StandardRecordTask] 不支持此直播流的视频编码格式(只支持 H.264),本场直播不再自动启动录制。BililiveRecorder.Flv.Parser.UnsupportedCodecException: Unsupported Video Codec: 12
。Proposal
I think it's time to add support to HEVC codec. Considering how this software works, adding HEVC support should not be a very difficult task I guess.
我认为现在是时候加入对HEVC编码的支持了。考虑到这个软件的运行原理,我觉得添加HEVC支持应该不会太难。
The text was updated successfully, but these errors were encountered: