Если я правильно понимаю, у вас есть pcaps, но вы хотите получить RTP от них?
Пользовательский интерфейс Wireshark
Вы можете использовать пользовательский интерфейс Wireshark, чтобы легко получить RTP из pcap через Меню: Телефония / RTP / затем показать все потоки ... нажмите наПоток это списки, а затем «анализировать».
Однако, если вы хотите автоматизировать это и избежать пользовательского интерфейса ... вы можете использовать tshark.Я нашел несколько учебных пособий в Интернете и использовал их для создания тестового жгута, который автоматически перестраивает аудио / rtp на pcap, затем создает wav-файл и транскрибирует аудио с этого wav-файла в текст.
Автоматизировано с помощью Tshark
Я делал тестовый звонок и хотел преобразовать записанный pcap в аудио.Для этого я удалил RTP из pcap, затем преобразовал файл rtp в необработанный звук, а затем в wav.
Я делаю все это через командную строку, чтобы его можно было автоматизировать.Так что на самом деле у меня есть сценарий оболочки, который делает это:
tshark -a duration:20 -w /jenkins/userContent/sip_1call.pcap
Выше записывает захват пакета в течение 20 секунд (продолжительность вызова происходит одновременно) и выводит пакеты как sip_1call.pcap
ssrc=$(tshark -n -r /jenkins/userContent/sip_1call.pcap -R rtp -T fields -e rtp.ssrc -Eseparator=, | sort -u | awk 'FNR ==1 {print}')
Я устанавливаю переменную ssrc для этого действия использования tshark для извлечения значения rtp ssrc.Что такое ssrc, так это идентификатор потока RTP.Если у вас есть один поток, у вас будет одно значение RTP ssrc.Вам нужно было бы захватить все файлы RTP.ssrc и вывести их в файл, и он снова может легко стать необработанным аудио.
sudo tshark -n -r /jenkins/userContent/sip_1call.pcap -R rtp -R "rtp.ssrc == $ssrc" -T fields -e rtp.payload | tee payloads
На этом этапе моего сценария оболочки я снова запускаю tshark на записанном pcap и принимаю это значение ssrc и говорю «найди их всех как« полезную нагрузку »)
for payload in `cat payloads`; do IFS=:; for byte in $payload; do printf "\\x$byte" >> /jenkins/userContent/sip_1call.raw; done; done
Теперь скрипт устанавливает эти RTP.ssrc в выходной файл, я вызываю sip_1call.raw
Для своих целей я также хотел преобразовать этот необработанный файл в wav, поэтому я использовал sox:
sox -t raw -r 8000 -v 4 -c 1 -U /jenkins/userContent/sip_1call.raw /jenkins/userContent/sip_1call.wav
Я сделал еще кое-что в моей инфраструктуре автоматизации (например, переписал аудио в текст и сравнил с известной строкой) ... но это выходит за рамки вашего вопроса.
Надеюсь, это поможет ...
Подробнее о SSRc: http://en.wikipedia.org/wiki/Real-time_Transport_Protocol
Подробнее о полном сценарии оболочки, который я использую: http://www.continuous -qa.com / 2013/04/automated-verification-of-voip-audio.html