Skip to content
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

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

Open
shiningPrince1003 opened this issue Apr 22, 2021 · 8 comments
Open

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

shiningPrince1003 opened this issue Apr 22, 2021 · 8 comments

Comments

@shiningPrince1003
Copy link

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

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

@duan602728596
Copy link
Owner

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

@Francis0546
Copy link

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

@Hz007
Copy link

Hz007 commented Mar 5, 2022 via email

@duan602728596
Copy link
Owner

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

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

@Genteure
Copy link

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

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

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

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

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

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

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

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

@duan602728596
Copy link
Owner

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

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

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

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

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

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

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

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

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

@shiningPrince1003
Copy link
Author

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

@Hz007
Copy link

Hz007 commented Mar 21, 2023 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants