hr3lxphr6j / bililive-go

一个直播录制工具
GNU General Public License v3.0
3.83k stars 494 forks source link

[提问]: use_native_flv_parser的用法 #566

Open fgo1212 opened 1 year ago

fgo1212 commented 1 year ago

程序版本

v0.7.18

所使用的 config 文件的内容

No response

程序 log

No response

自由描述

use_native_flv_parser: true 时会自动分段并且会少录一段内容而且还会产生很多几百kb的小视频文件

use_native_flv_parser: false 时没有上述问题,但是在主播用手机播切成电脑播的时候就导致花屏

config要怎么设置才能避免以上问题?

kira1928 commented 1 year ago

use_native_flv_parser: false 也就是默认设置时使用 ffmpeg 录制 flv 直播流。ffmpeg 个方便都很好,唯独两个问题无法解决。

  1. 很多直播平台在主播 pk 的时候会临时切换直播流的分辨率,虽然非常微小,通常只是 1080p 到 1082p 左右的变化,但这点变化 ffmpeg 无法处理,结果就是pk期间全程花屏,直到 pk 结束后分辨率变回来才会恢复。

  2. 个别高清直播使用 flv 直播流承载 hevc 编码,这是一种大家约定俗成的做法,但因为没有被标准化组织认可,所以 ffmpeg 拒绝支持这种直播流。 虽然国内有金山公司出的魔改版 ffmpeg 加入了对 hevc-flv 的支持,但需要自己编译什么的,比较麻烦。

为了解决上述问题,程序自制了一个 native flv parser。 当在配置文件中启用 native flv parser 来替代 ffmpeg 录制 flv 时,遇到问题 1 中的分辨率变化程序会自动分段来解决。问题2目前无法解决。 但 native flv parser 还不太成熟。一个问题就是你提到的频繁分段。会分段可能是因为程序的超时判定写得比较严格,稍有不顺心就认为连接中断,视频就分段了。

按理来说应该继续开发 native flv parser 完善它,但现在我一个人维护整个项目精力有限,这部分开发任务就渐渐搁置了。