首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在UDP上发送MPEGTS流

如何在UDP上发送MPEGTS流
EN

Stack Overflow用户
提问于 2012-05-23 15:21:18
回答 2查看 22.4K关注 0票数 6

我正在开发一个实时视频流系统,它主要由服务器和多个客户端组成。

现在,让我们忽略如何在服务器和客户端之间转发数据包,让我们只关注--服务器如何通过UDP数据包发送MPEGTS流。

该流以MPEGTS格式编码。

我想做的是阅读一些数据包(主要问题是“多少?”)并将它们封装在UDP数据包中。目的地(客户端)读取这些UDP数据包,然后将它们转发到VLC,VLC能够通过读取UDP数据包来播放MPEGTS网络流。

--如果我只发送视频包,一切都能正常工作--,相反,如果我试图封装在同一个UDP数据包中,一些视频包和一些音频包,VLC就无法解码和播放流。我在某个地方读到,每个UDP包应该包含7个TS包,但不幸的是,即使我遵守了这个规则,VLC也不能正确地解码流。

下面是我的程序的示例代码:http://pastebin.com/evMi6FkY

如何将MPEGTS包封装在UDP数据包中?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2012-06-04 19:29:28

您的问题是:“让我们忽略如何在服务器和客户端之间转发数据包”。

UDP要求您处理网络传输的所有问题,包括流量控制、错误检测和恢复、路径最大传输单元大小、分组化、缓冲、序列化、反复制等。

即使您将数据分解成大小合适的数据包,并按正确的速率发送,也会有一些数据丢失、复制或无法正常发送。您的代码必须处理所有这些条件,否则您无法信任您收到的就是您发送的内容。

在这种情况下,我猜想您的数据包变得太大,导致碎片和较高的下降率。一般来说,每个包最好不要超过1400个字节。但是,不正确的排序、丢失和复制也是可能的,而且当您试图发送更大数量的数据时,所有这些都变得更有可能。

免责声明:我在一家生产商业UDP数据传输软件的公司工作。

票数 3
EN

Stack Overflow用户

发布于 2015-12-24 06:56:38

您可以尝试https://github.com/KwikFlixTV/kwik-udp-send,它使用ts或FIFO文件,并发送恒定的比特率流。

重要特征清单:

  • 将ts文件作为ts udp流
  • 发送,如果没有要发送的文件,则
  • 将空数据包发送到缓存缓冲区,以提供实时进程/线程优先级,从而提供流
  • 与FIFO文件(

H 110读取文件)的稳定性,以提供流h 211f 212的稳定性。

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

https://stackoverflow.com/questions/10723017

复制
相关文章

相似问题

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