【问题标题】:H.264 over RTP stream broken when played backH.264 over RTP 流在播放时中断
【发布时间】:2013-01-23 17:09:54
【问题描述】:

我正在通过 RTP 从一个主流终端录制 H.264 单个 nalu 数据包流并播放它。

问题是,当我使用我正在开发的 RTP 模块将其播放并发送到终端时,视频会跳过并且我在帧之间出现模糊部分。我不知道它会发生什么或可能会发生什么。这是一些数据:

视频以 15 fps 的速度录制和播放 帧之间的 rtp 时间戳增量为 6000 (90000khz/15fps) rtp 数据包之间的时间间隔约为 66.66 mili secs (1000milis/15fps),如果不增加时间戳,则为 2 milis(对于图片参数集和其他与时间无关的数据包)。

所有这些数据都是用wireshark嗅探收集的。

所以,对我来说,流看起来很健康,但由于某种原因,播放效果很差。这是一个显示回放的视频链接。

http://youtu.be/TGE14y76lc0

也许观看视频的人可以认出这是怎么回事。

感谢您的帮助!

【问题讨论】:

  • 您是否会丢失帧,即您是否检查过 RTP 序列号中没有间隙?如果您通过 UDP 发送,通常有助于增加操作系统的 UDP 套接字缓冲区大小 (SO_RCVBUF)。
  • @Ralf 感谢您的快速回答,丢包似乎不是问题,但我认为我在抖动缓冲区和时钟偏差方面遇到了问题。根据wireshark流分析:最大delta = 67.19 ms at packet no. 179 最大抖动 = 2981129.32 毫秒。平均抖动 = 90532.21 毫秒。最大偏差 = 47698223.33 毫秒。总 RTP 数据包 = 908(预期 908) 丢失的 RTP 数据包 = 0 (0.00%) 序列错误 = 0 持续时间 23.87 秒(961328 毫秒时钟漂移,对应于 3714017 Hz(+4026.69%)
  • @Ralf 好吧,我终于破解了。那里有两个问题。第一个终端在我录制时重置了 rtp 时间戳,这使我的计数器溢出并在播放时弄乱了我的时间戳。另一个与 Ralf 指出的有关,数据包没有被丢弃,但由于缓冲区错误,RTP 数据包被截断,因此 h.264 比特流信息丢失。现在视频正在顺利播放:D
  • 我正在尝试做类似的事情。现在卡住了。你能一步一步地提供这个吗?这将非常有帮助。

标签: voip h.264 rtp


【解决方案1】:

最后我破解了它。那里有两个问题。

第一个终端在我录制时重置了 rtp 时间戳,这使我的计数器变量溢出并在播放时弄乱了我的时间戳。

另一个与 Ralf 指出的有关,数据包没有被丢弃,但由于缓冲区错误,RTP 数据包在录制时被截断,因此 h.264 比特流信息丢失了。

现在视频可以流畅播放了 :D –

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-05
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    相关资源
    最近更新 更多