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

添加“深层”直播流修复和“优化”功能 #79

Closed
Genteure opened this issue Jan 3, 2020 · 1 comment
Closed

添加“深层”直播流修复和“优化”功能 #79

Genteure opened this issue Jan 3, 2020 · 1 comment
Labels
enhancement New feature or request

Comments

@Genteure
Copy link
Member

Genteure commented Jan 3, 2020

修复

要解决的问题和 #56 本质上是同一个问题,现在哪个服务器都有可能出这问题,不止是腾讯云(但是我怀疑是因为其他服务器是从腾讯云服务器上拉来的已经有问题的流)

把现有的『时间戳修复工具』的逻辑完善修改,内置到录播姬内,实现边录边处理。

优化

其实就是删除所有 Filler NALU,可以减少一点保存下来的文件大小,对实际文件的播放无影响。


因为这些修复处理逻辑是根据已知的问题流来实现的,如果服务器给了没见过的流会有搞坏的可能性,所以需要做成一个 opt in 的功能。如果可能的话可以考虑在修改了的地方插入一些 Sei NALU 记录一下都做了什么修改,实现反向处理还原原文件。


怪话

@Afanyiyu 自告奋勇想 PR

image

@Genteure Genteure added the enhancement New feature or request label Jan 3, 2020
@Genteure
Copy link
Member Author

Genteure commented Jan 3, 2020

已知常见问题 和 我自己的修复思路

  • 两次推流贴到了一起
    • 以 script tag 为分割点切割开
  • 两次推流贴到了一起并且第二个 script tag 后没有 video header 或 audio header
    • 切割开后,在第二个文件的开头插入第一个文件的 a/v header
  • 正常的流中间多出来一对时间戳偏离正常时间戳的 a/v header
    • 删除这对时间戳异常的 header
  • script 后出现多个时间戳接近但不同的 a/v header
    • 根据 header 内容先进行去重
    • 如果有内容不同的 header 取最后出现的一个,其他用自定义 SEI 保存起来,方便有问题时手动修复
    • 把选中的一对 a/v header 时间戳设为 0
  • 时间戳跳变
    • 通常发生在 GOP 和 GOP 之间
    • 算一下偏了多少,偏回去
      • 算法需要仔细研究一下,要考虑到可能的视频丢帧问题,音频不会丢帧所以可以以音频为主要基准
  • 从 a/v header 后第一帧开始时间戳跳变
    • 直接偏回 0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Development

No branches or pull requests

1 participant