我正在开发一个实时视频流系统,它基本上由一个服务器和几个客户端组成。
现在,让我们忽略数据包是如何在服务器和客户端之间转发的,让我们只关注服务器如何通过 UDP 数据包发送 MPEGTS 流。
流以 MPEGTS 格式编码。
我要做的是读取一些数据包(主要问题是“多少?”)并将它们封装在 UDP 数据包中。目的地(客户端)读取这些 UDP 数据包,然后将它们转发给 VLC,VLC 能够通过读取 UDP 数据包来播放 MPEGTS 网络流。
如果我只发送视频数据包,一切正常,相反,如果我尝试将一些视频数据包和一些音频数据包封装在同一个 UDP 数据包中,VLC 将无法解码和播放流。我在某处读到每个 UDP 数据包应包含 7 个 TS 数据包,但不幸的是,即使我遵守此规则,VLC 也无法正确解码流。
这是我的程序的示例代码:http: //pastebin.com/evMi6FkY
我应该如何将 MPEGTS 数据包封装在 UDP 数据包中?
谢谢!