Дамп WebRTC потока в файл

Я хотел бы захватить аудио и видео из потока WebRTC в файл или пару файлов, если для аудио и видео требуются отдельные файлы. Аудио и видео не мультиплексируются вместе и, как известно, доступны на наборе портов udp сервера:

Port   Encoding
5000 - VP8 video
5001 - RTCP (for video)
5002 - Opus audio @48kHz 2 channels
5003 - RTCP (for audio)

Файл / данные SDP недоступны, можно использовать DTLS.

Я бы предпочел использовать avconv или ffmpeg для захвата потока, если не будет предложен лучший инструмент.

Изменить: Я обнаружил, что это, как я спрашивал, скорее всего, не сработает. Пока я не услышу иное, ни один из этих инструментов не поддерживает первоначальное рукопожатие DTLS, за которым следует передача данных через SRTP.


person Paul Gregoire    schedule 09.09.2014    source источник
comment
Проблема с WebRTC заключается в том, что все зашифровано с использованием DTLS, поэтому без создания / использования всего среднего уровня декодируйте его, тогда вам не повезло. Я не знаю способа отключить DTLS для проверки всего.   -  person bond    schedule 19.10.2014


Ответы (1)


Конвейер Gstreamer-1.0 будет работать нормально. Я не уверен на 100% в объединении двух потоков вместе, но я считаю, что это возможно (возможно, с oggmux). Я протестировал нечто подобное и смог декодировать и воспроизводить потоки на устройстве Linux, получающем расшифрованные / демультиплексированные потоки rtp через шлюз (я использую Janus-Gateway).

gst-launch-1.0 rtpbin name=rtpbin udpsrc name=videoRTP port=5000 \
    caps="application/x-rtp, media=video, encoding-name=VP8-DRAFT-IETF-01, payload=100" ! \
    rtpbin.recv_rtp_sink_0 rtpbin. ! rtpvp8depay ! webmmux ! queue ! filesink location=video.webm sync=false async=false \
    udpsrc name=videoRTCP port=5001 ! rtpbin.recv_rtcp_sink_0 \
    udpsrc name=audioRTP port=5002 \
    caps="application/x-rtp, media=audio, clock-rate=48000, encoding-name=X-GST-OPUS-DRAFT-SPITTKA-00, payload=96" ! \
    rtpbin.recv_rtp_sink_0 rtpbin. ! rtpopusdepay ! oggmux ! filesink location=audio.ogg sync=false async=false \
    udpsrc name=audioRTCP port=5003
person Benjamin Trent    schedule 09.09.2014
comment
Обрабатывает ли это рукопожатие DTLS и данные SRTP? - person Paul Gregoire; 20.11.2014
comment
Janus-Gateway обрабатывает рукопожатие DTLS и позволяет получить доступ к незашифрованным и демультиплексированным пакетам RTP / RTCP. Существуют пользовательские плагины Gstreamer, которые я не перепутал, которые были разработаны Ericsson Research для их платформа OpenWebRTC, но я не экспериментировал с этой структурой. - person Benjamin Trent; 20.11.2014