duan602728596 / 48tools

48工具,提供公演、口袋48直播录源,公演、口袋48录播下载,封面下载,B站直播抓取,B站视频下载,A站直播抓取,A站视频下载,抖音视频下载,视频截取,视频导出gif,视频合并等功能。口袋48的pc版,可以看成员的直播、弹幕和录播。
https://yzb1g5r02h.feishu.cn/docx/MxfydWlNaovZ5sxsbJ5crnAlnVb
GNU General Public License v3.0
472 stars 57 forks source link

建议直播抓取时 单人与连麦分段保存 #25

Open shiningPrince1003 opened 3 years ago

shiningPrince1003 commented 3 years ago

在成员连麦时,有几率遇到下面的情况: 成员单人直播流与连麦直播流编码格式不同 包括但不限于:帧率 编码profile CABAC GOP值 如果直接生成一个flv文件,会在播放到连麦时出现视频画面冻结、绿线、花块等情况。 建议对连麦进行检测,并分段录制。 如需合并,可让用户手动开始ffmpeg转码,转成统一格式后再合并。

屏幕截图 2021-04-22 112914 屏幕截图 2021-04-22 113015

duan602728596 commented 3 years ago

连麦的时候直播流地址是不变的,所以可能没法保证区分单人还是连麦了。 不过我可以考虑一下录制直播的同时转码。

Francis0546 commented 2 years ago

求问这个录出来有什么补救措施吗,正常直播部分是好的,连麦部分会出错,怎样能得到完好的连麦部分片段呢?

Hz007 commented 2 years ago

您好,这里是自动回复。我已收到您的邮件,谢谢。

duan602728596 commented 2 years ago

求问这个录出来有什么补救措施吗,正常直播部分是好的,连麦部分会出错,怎样能得到完好的连麦部分片段呢?

视频有声音吗?有没有换其他的播放器试试?录制的视频给我发一份吧。

Genteure commented 2 years ago

连麦的时候主播一侧会断开原推流,重新用声网SDK推流。结束连麦的时候会断开重新推直播姬自己编码出来的数据。 因为编码器不同、编码参数不同,直播流里视频的解码参数也不同,比如最明显的视频分辨率,除了视频分辨率以外还有其他的参数也会变。 如果断开重连足够快,直播服务器会把两个不同的直播流拼到一起发给播放端。数据都是完整的,但是直播服务器与播放端的连接没有断开,于是两段不同解码参数的直播流就拼接到一起了。

解码参数1 数据 ... 数据 数据 解码参数2 数据 数据 数据 ...

因为各种播放器和 ffmpeg 都只会使用文件最开头的那一组解码参数,播放到连麦部分的时候会用正常直播部分的解码参数去解码连麦部分的视频数据,导致花屏绿屏等问题。

如果有直播服务器给的没有处理过的原始数据的话,可以用我写的录播姬里工具箱的录播修复功能自动修。 可以自动在检测到新的 header 以及参数变动的位置把文件切开,每个文件都可以单独正常播放。

我看这个项目好像是用 ffmpeg 录播的,因为 ffmpeg 也只认第一组解码参数(也就是音频和视频的header),后面的解码参数就被丢掉了,就不能自动修复了。

如果文件很重要,可以尝试手动修复,大概思路:

  1. 找一个含有连麦部分解码参数的文件,从里面提取连麦部分的解码参数
  2. 找到问题文件里连麦部分的位置
  3. 把连麦部分的解码参数和连麦部分的数据复制到一个新文件里

手动编辑可以使用我写的另一个工具 FlvInteractiveRebase,可以实现 tag 级的文件编辑,避免眼看手改二进制的麻烦。

duan602728596 commented 2 years ago

连麦的时候主播一侧会断开原推流,重新用声网SDK推流。结束连麦的时候会断开重新推直播姬自己编码出来的数据。 因为编码器不同、编码参数不同,直播流里视频的解码参数也不同,比如最明显的视频分辨率,除了视频分辨率以外还有其他的参数也会变。 如果断开重连足够快,直播服务器会把两个不同的直播流拼到一起发给播放端。数据都是完整的,但是直播服务器与播放端的连接没有断开,于是两段不同解码参数的直播流就拼接到一起了。

解码参数1 数据 ... 数据 数据 解码参数2 数据 数据 数据 ...

因为各种播放器和 ffmpeg 都只会使用文件最开头的那一组解码参数,播放到连麦部分的时候会用正常直播部分的解码参数去解码连麦部分的视频数据,导致花屏绿屏等问题。

如果有直播服务器给的没有处理过的原始数据的话,可以用我写的录播姬里工具箱的录播修复功能自动修。 可以自动在检测到新的 header 以及参数变动的位置把文件切开,每个文件都可以单独正常播放。

我看这个项目好像是用 ffmpeg 录播的,因为 ffmpeg 也只认第一组解码参数(也就是音频和视频的header),后面的解码参数就被丢掉了,就不能自动修复了。

如果文件很重要,可以尝试手动修复,大概思路:

  1. 找一个含有连麦部分解码参数的文件,从里面提取连麦部分的解码参数
  2. 找到问题文件里连麦部分的位置
  3. 把连麦部分的解码参数和连麦部分的数据复制到一个新文件里

手动编辑可以使用我写的另一个工具 FlvInteractiveRebase,可以实现 tag 级的文件编辑,避免眼看手改二进制的麻烦。

其实最大的问题就是解码这块,可以尝试一下实时解码。

shiningPrince1003 commented 1 year ago

目前口袋的直播流已使用m3u8的格式,m3u8文件内包含若干个TS文件。分别存储每一段TS到一个文件夹,可能是一个解决连麦视频流花屏卡顿的更优办法。如果用户有本地播放的需要,可以在录制结束后生成一个包含本地所有TS片段的m3u8文件。

Hz007 commented 1 year ago

您好,这里是自动回复。我已收到您的邮件,谢谢。