从Wireshark提取Mpeg TS

时间:2018-09-19 22:46:58

标签: wireshark pcap mpeg mpeg2-ts

我需要从Wireshark捕获中提取MPEG-TS流。我已经设法做到了,但是当我使用VLC播放时,输出很糟糕,它只是一个绿色的窗口,最上面的几行有一些抖动。

这是我的做法:

  1. 使用ip.dest过滤器捕获多播流。
  2. 分析->解码为-> UDP端口(字段),端口号(值),MP2T(当前)
  3. 工具转储MPEG TS数据包。

它不能正确播放。还有其他方法吗

3 个答案:

答案 0 :(得分:1)

当我需要从pcap文件中转储TS时,请执行以下操作:

  1. 如果纯UDP中的TS(列协议显示每个数据包的MPEG TS),请跳至第3步
  2. 如果TS以RTP打包,请右键单击任何数据包->解码为->在“当前”字段下选择RTP
  3. 使用工具MPEG Dump,工具->转储MPEG TS数据包

我不使用MP2T数据包解码,通常不起作用。

如果TS是纯UDP,则可能会发生TS数据包被混洗并且用作连续性计数器的4位长的TS数据包字段不足以正确排序TS数据包的情况。这可能会导致转储的TS的播放损坏。

答案 1 :(得分:1)

我在原始pcap2mpeg中添加了两个过滤选项。

您可以在https://github.com/bugre/pcap2mpegts

上找到它

因此您可以:

  • 按udp目标端口过滤
  • 按mcast组IP和目标端口过滤

对于捕获的文件在相同IP上但在不同端口或不同mcast IP上具有多个TS的情况。

您将其运行为:

pcap2mpegts.pl -y -i 239.100.0.1 -p 2000 -l multi_ts_capture.pcap -o single-stream-output.ts

答案 2 :(得分:0)

不使用Wireshark,可以使用pcap2mpeg.pl。我测试了它,如果只有一个MPEG,效果很好 流在PCAP中。

以下是ffprobe在mpeg文件上的输出,该文件包含2个已成功提取的流:

Input #0, mpegts, from 'test.mpeg':
  Duration: 00:27:59.90, start: 4171.400000, bitrate: 8665 kb/s
  Program 1 
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(progressive), 4096x2176 [SAR 1:1 DAR 32:17], 10 fps, 10 tbr, 90k tbn, 20 tbc
    Stream #0:1[0x1001]: Data: bin_data ([6][0][0][0] / 0x0006)