Извлечь Mpeg TS из Wireshark

Мне нужно извлечь поток MPEG-TS из захвата Wireshark. Мне удалось это сделать, но когда я воспроизводил его с помощью VLC, вывод был дрянным, это просто зеленое окно с некоторым дрожанием в верхних строках.

Вот как я это сделал:

  1. Захвачено с использованием фильтра ip.dest для многоадресного потока.
  2. Анализировать -> Декодировать как -> Порт UDP (поле), номер порта (значение), MP2T (текущий)
  3. Инструменты Дамп пакетов MPEG TS.

Это не воспроизводится правильно. Есть ли другой способ сделать это


person user726720    schedule 19.09.2018    source источник


Ответы (3)


Когда мне нужно сбросить TS из файла pcap, я делаю следующее:

  1. Если TS в простом UDP (протокол столбца показывает MPEG TS для каждого пакета), перейдите к шагу 3.
  2. Если TS упакован в RTP, щелкните правой кнопкой мыши любой пакет -> Декодировать как -> Выберите RTP в поле «Текущий».
  3. Используйте инструмент Дамп MPEG, Инструменты -> Дамп пакетов MPEG TS.

Я не использую декодирование пакетов MP2T, обычно оно не работает.

Если TS находится в простом UDP, может случиться так, что пакеты TS перемешаны, а поле пакета TS длиной 4 бита, которое служит счетчиком непрерывности, недостаточно для правильного порядка пакетов TS. Это может привести к повреждению воспроизведения дампа TS.

person stuhlo    schedule 21.09.2018

Я добавил два параметра фильтрации в исходный файл pcap2mpeg.

Вы можете найти его по адресу: https://github.com/bugre/pcap2mpegts.

Так что вы можете:

  • фильтровать по порту назначения udp
  • фильтровать по IP-адресу группы mcast и порту назначения

для случаев, когда захваченный файл имеет несколько TS на одном IP-адресе, но на разных портах или на разных IP-адресах mcast.

вы бы запустили его как:

pcap2mpegts.pl -y -i 239.100.0.1 -p 2000 -l multi_ts_capture.pcap -o single-stream-output.ts
person 6ugr3    schedule 24.05.2020

Не используя Wireshark, вы можете использовать pcap2mpeg.pl. Я протестировал его, и он хорошо работает, если в PCAP есть один поток MPEG.

Вот вывод ffprobe в файле mpeg с двумя потоками, который был успешно извлечен:

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)
person Gabriel Devillers    schedule 02.10.2019