У меня есть файл PCAPNG, и мне нужно получить от него RTP-пакеты. В частности, один из моих RTP пакетов выглядит как ...Как извлечь RTP-пакеты определенных полей из Wireshark Capture?
кадров N: X байт на проводе ...
- Ethernet II, Src: ...
- IPv4, Src: ...
- TCP, Src Port: RSTP ...
- RTSP чередованием кадров, канал: 0x02, 163 байт
- в реальном времени транспортный протокол
... и что мне нужно от каждого пакета является ...
- канала от RTSP чередования кадра
- Длины от RTSP чередования кадра
- Полезной нагрузки от RTP
... используя эти данные, я заново создаю аудио- и видеофайлы, чтобы переконструировать полное видео из локальной полезной нагрузки (воспроизведение не выполняется).
Я могу успешно получить пакеты RTP, используя либо ...
tshark -r my.pcap -R -T поля -e -w rtp.payload rtp.out
или .. .
tshark -r my.pcap -R -T поля -e rtp.payload> rtp.out
... но проблема, которую я имею, что первый метод будет сохранять все, что нужно, но по какой-то причине он добавит дополнительные данные (то есть больше, чем только полезную нагрузку RTP и содержимое чередующегося кадра RTSP) в строке nge places ..., что мешает мне написать программу для получения данных, которые мне нужно проверить. Я попытался удалить все дополнительные данные с помощью нескольких регулярных выражений, но существует слишком много разных сценариев, которые перекрываются с другими допустимыми сценариями.
Второй способ обеспечит только полезную нагрузку RTP без требуемых чередующихся свойств (он будет генерировать шестнадцатеричный код с двоеточием между каждым байтом, но это легко обрабатывается). Даже если бы я мог сделать еще один звонок, чтобы получить все свойства RLEP с чередованием кадров, мне нужно будет объединить 2 выхода, идентифицируя каждый пакет с помощью разделителя/разделителя, который я бы хотел избежать (я не мог получить tshark сделать это либо ...).
Я заглянул в фильтры чтения tshark, которые, похоже, должны быть в состоянии делать то, что мне нужно, но пока я не смог понять это. Обратите внимание, что я делаю это только для создания выборочных данных и записи логики, которая форматирует данные, необходимые для воспроизведения. В конце концов один из моих сотрудников изменит потокового клиента, чтобы захватить данные в соответствующем формате (поэтому я могу просто запускать данные через ffmpeg без его модификации). Любые идеи о том, как я могу создать формат, который мне нужен?
Спасибо большое! Вы правы, я имел в виду «-R rtp» (на самом деле ... так как я не делал двойной проход (-2 флаг), я на самом деле имел в виду «-Y rtp»). Я обновил свой WireShark до последней версии разработки и выполнил команду «tshark -r rtp_rtsp_Capture.pcapng -Y rtp -T fields -e rtsp.channel -e rtsp.length -e rtp.payload> rtp.out», и он работает! – Lane