Захват UDP аудио и видеотраффика из файла дампа

WCS может автоматически при старте воспроизводить поток из указанного файла, полученного при помощи tcpdump или любого другого инструмента сбора дампов в формате Pcap. Эта возможность полезна прежде всего в целях отладки при разработке приложений.

Имя файла задается в формате audioPort-videoPort-name.pcap, например

pull_streams=pcap://31070-31072-test.pcap

где 31070 - порт для аудио пакетов, 31072 - порт для видео пакетов.

К каждому pcap файлу должен быть приложен файл с SDP, имя которого задается аналогично

31070-31072-test.pcap.sdp

Пример содержимого файла SDP:

v=0
o=Gateway-0.0.0.666 0 0 IN IP[local_ip_type] [local_ip]
s=-
c=IN IP[local_ip_type] [local_ip]
t=0 0
m=audio 0 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
m=video 0 RTP/AVP 112
a=rtpmap:112 H264/90000
a=fmtp:112 profile-level-id=42e01f; packetization-mode=1
a=content:main
a=rtcp-fb:* ccm fir
a=rtcp-fb:* nack pli
a=sendrecv

Файл дампа и соответствующий файл SDP должны быть помещены в каталог /usr/local/FlashphonerWebCallServer/media

Захват RTSP-interleaved потока из файла дампа

В целях отладки, в состав WCS сервера входит утилита, предназначенная для захвата RTSP-потока из файла, полученного при помощи tcpdump или любого другого инструмента сбора дампа IP-пакетов. Захваченный поток раздается по RTSP, имитируя IP-камеру. В свою очередь, WCS может захватывать поток с этой "камеры". Такая возможность полезна в случае, когда нет доступа непосредственно к RTSP-источнику, но есть файлы дампа потока с этого источника. Утилита работает только с файлами, в которых содержатся rtsp interleaved сессии.

При запуске необходимо указать следующие параметры:

Пример запуска:

java -Dcom.flashphoner.fms.AppHome=/usr/local/FlashphonerWebCallServer -cp /usr/local/FlashphonerWebCallServer/lib/tbs-flashphoner.jar:/usr/local/FlashphonerWebCallServer/lib/* com.flashphoner.tools.rtsp.RtspPcapServer /usr/local/FlashphonerWebCallServer/pcaps 3554 2554 true

Здесь

/usr/local/FlashphonerWebCallServer/pcaps - каталог на сервере
3554 - порт, на котором будет имитироваться IP-камера
2554 - порт, на котором находился источник потока для дампа (реальная камера)
true - пропускать пакеты, отброшенные при сборе дампа.

Если на этом же сервере запущен WCS, необходимо вторым параметром указать порт, не входящий в диапазоны, используемые WCS. Имя потока, отдаваемого на данному порту, будет соответствовать имени потока в файле дампа.

Информация о работе утилиты выводится в стандартное устройство вывода. Например, если в каталоге /usr/local/FlashphonerWebCallServer/pcaps находится один файл log.pcap, содержащий один поток, будет выведено следующее:

04:35:20,721 INFO        RtspPcapServer - Starting
04:35:22,244 INFO        RtspPcapServer - Available sources:
04:35:22,245 INFO        RtspPcapServer - Source{path=/usr/local/FlashphonerWebCallServer/pcaps/log.pcap, pcap=io.pkts.Pcap@5a39699c, stream=RTSPStream{config=8, data=22052, streamName='live1.sdp'}}
04:35:22,245 INFO        RtspPcapServer - Starting PCAP RTSP server
04:35:22,407 INFO        RtspPcapServer - Listening PCAP RTSP on address /0.0.0.0 port 554

В данном примере, получить поток можно по адресу

rtsp://hostname/live.sdp

здесь hostname - имя сервера, на котором запущена утилита.

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