Ffmpeg 如何通过UDP发送MPEGTS流
我正在开发一个实时视频流系统,它基本上由一个服务器和几个客户端组成 现在,让我们忽略数据包在服务器和客户端之间的转发方式,只关注服务器如何通过UDP数据包发送MPEGTS流 流以MPEGTS格式编码 我试图做的是读取一些数据包(主要问题是“有多少?”)并将它们封装在UDP数据包中。目的地(客户端)读取这些UDP数据包,然后将其转发给VLC,VLC能够通过读取UDP数据包播放MPEGTS网络流 如果我只发送视频数据包,一切正常,相反,如果我尝试将一些视频数据包和一些音频数据包封装在同一个UDP数据包中,VLC无法解码和播放流。 我在某个地方读到,每个UDP数据包应该包含7个TS数据包,但不幸的是,即使我遵守这条规则,VLC也不能正确解码流 以下是我的程序的示例代码: 如何在UDP数据包中封装MPEGTS数据包? 谢谢 您的问题是:“让我们忽略数据包是如何在服务器和客户端之间转发的” UDP要求您处理网络传输的所有问题,包括流量控制、错误检测和恢复、路径最大传输单元大小、打包、缓冲、序列化、重复数据消除等 即使您将数据分成大小刚好合适的数据包,并以正确的速率发送数据包,其中一些数据包仍将丢失、复制或无序发送。您的代码必须处理所有这些条件,否则您不能相信您收到的是您发送的 在这种特殊情况下,我猜您的数据包变得太大,导致碎片和高丢弃率。一般来说,每个数据包的字节数最好不要超过1400字节。但是,不正确的排序、丢失和重复都是可能的,而且当您尝试发送更大容量的数据时,这些都变得更有可能 免责声明:我在一家生产商用UDP数据传输软件的公司工作。您可以试试 它使用ts或FIFO文件并发送恒定比特率流 重要功能列表:Ffmpeg 如何通过UDP发送MPEGTS流,ffmpeg,udp,video-streaming,vlc,mpeg2-ts,Ffmpeg,Udp,Video Streaming,Vlc,Mpeg2 Ts,我正在开发一个实时视频流系统,它基本上由一个服务器和几个客户端组成 现在,让我们忽略数据包在服务器和客户端之间的转发方式,只关注服务器如何通过UDP数据包发送MPEGTS流 流以MPEGTS格式编码 我试图做的是读取一些数据包(主要问题是“有多少?”)并将它们封装在UDP数据包中。目的地(客户端)读取这些UDP数据包,然后将其转发给VLC,VLC能够通过读取UDP数据包播放MPEGTS网络流 如果我只发送视频数据包,一切正常,相反,如果我尝试将一些视频数据包和一些音频数据包封装在同一个UDP数据
- 将ts文件作为ts udp流发送
- 如果没有要发送的文件,它将发送空数据包
- 使用实时进程/线程优先级来提供流的稳定性
- 使用FIFO文件
- 将文件读取到具有累积部分的缓存缓冲区,以提供流的稳定性
@
,它通常不会播放udp流,尽管url没有用户名/密码。话虽如此,由于udp数据包中容纳的ts数据包不超过8 188字节,因此不能包含更多。(少不成问题)。udp数据包应以ts数据包的开头开始,即第一个字节应为0x47。使用wireshark验证数据。您解决问题了吗?我用dvblast做视频流,用UDP发送数据包,用ffmpeg接收数据包。甚至将UDP数据包大小设置为1316;但我经常遇到错误:“PES数据包大小不匹配”,输出视频很糟糕。