2017-04-25 282 views
1

让我们假设一个通过udp推送mpegts的编码器/ ffmpeg。我们还有另一个接收这些mpegts数据包的ffmpeg。在接收端,由于媒体是通过UDP接收的,所以有可能会丢失一些数据包,或者出现乱序。我很想知道如何接收ffmpeg来处理它。任何熟悉ffmpeg处理方式的人在UDP上收到的无序MPEGTS数据包

发送过程的ffmpeg -re -i xyz.mp4 -codec复制-f MPEGTS UDP://本地主机:5011

接收过程-i UDP://本地主机:5011 output.mov

+0

FFMpeg在内部管理所有这些,所以你不必担心它。您只需抓取属于您想要解码的流的数据包,ffmpeg会按顺序将帧送回。在寻找时,您需要告诉ffmpeg刷新其内部缓冲区。 – WLGfx

+0

是的WLGfx,这是我们的期望。但我试图钻取mpegts和avio图层的代码,以了解*如何*和*它在哪里执行它。因为,如果你看一下,在MPEGTS中,我会看到可以使用的连续性计数器。但那只是4位。所以,不按顺序可以被最多16个数据包吸收。我没有看到一个可以用于定单的明确字段,不像它可能包含在RTP中,其中seq no可能是有用的,并且确定性度量依赖于 – Rupesh

回答

1

一MPEG2-TS分组报头CC字段中的不连续性几乎总是仅用于指示TS级丢失的MPEG2-TS分组。 CC字段的4位数量很少,以允许可靠处理无序数据包。同样在传输流级上,您要么收到数据包,要么根本没有收到数据包,所以处理乱序数据包不会考虑传输流本身。
重新排序只会成为IP数据报的问题,因为IP数据包的有序接收无法得到保证。在UDP中没有内置的机制来允许重新排序数据包。如果你想重新排序你必须使用RTP,无论是在UDP之上还是在IP之下。