首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么视频播放器会丢失实时RTP流的一些前几帧?

为什么视频播放器会丢失实时RTP流的一些前几帧?
EN

Stack Overflow用户
提问于 2011-11-17 21:33:04
回答 1查看 3.1K关注 0票数 0

我已经写了一个RTSP服务器。它通过RTP/UDP发送h246/AAC流数据。视频的RTP发送包间隔是30ms,音频的RTP发送包间隔是20ms。时间戳是从flv-tag中提取的(我的服务器从flv文件中获取视频和音频数据)。视频播放器丢失了前几个视频帧。因此,音频比视频提前了几秒钟。为什么会这样呢?在服务器端进行流媒体播放之前,我应该暂停吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-18 01:23:30

有几种可能性:

  • UDP是不可靠的协议。您可以检查RTP序列号,查看是否如此,以及丢弃了多少帧/哪些帧。可能有助于最小化UDP分组丢失的是增加客户端上的UDP接收缓冲区大小。Here是一个如何在linux上做到这一点的例子。当然,你也可以在windows上做同样的事情。
  • 客户端只有在收到IDR帧后才能正确解码视频。在此之前,它无法正确解码视频。是您流式传输到新客户端的第一帧IDR帧(请记住,它仍然可能丢失)。

在任何情况下,在我看来,你的视频播放器应用程序也有另一个问题:即使帧被丢弃,播放器也负责缓冲和同步音频和视频,并且应该能够做到这一点,而不考虑数据包丢失。

在纯粹的信息注释中,您还可以在RTSP上实现RTP/RTCP交错(因此在TCP上)。这样你就不必担心丢帧了。像live555媒体流库和VLC这样的库支持这一点。

回答你最后一个关于暂停的问题:不,这与它无关。RTSP纯粹是信令协议。数据包丢失将发生在传输(UDP)层。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8167932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档