LINUX.ORG.RU

Как забирается RTP поток у сервера RTSP?

 , , ,


1

2

Приветствую.

Дошли руки для продолжения темы (RTSP публикация надежна?), но пока классический вариант освоить требуется.

Все это «ноу-хау» )) делаю на основе кода на С умершего ffserver от ffmpeg, в котором и реализован только сам RTSP (+html) сервер, а RTP протокол обернут в библиотеки ffmpeg-a - собсна что мне и нужно с одной стороны, но не дает понимание как там работает RTP.

С RTSP понятно - слушающий сокет, через который по входящим событиям (poll) парсится текст. После rtsp согласования открывается еще один (хотя в netstat вижу 2 для rtp и rtcp) слушающий сокет, в который начинают писаться кадры, обернутые в rtp и разбитые на udp/tcp пакеты (в первую очередь рассматриваю udp соединение).

Собсна из за непонимания как происходит RTP обмен вопросы

  1. rtp клиент запрашивает каждый раз новые данные или rtsp сервер просто пишет в сокет, пока в сокет rtsp не придет закрыть соединение?
  2. несколько причин есть очередного рефакторинга, но одна из них это в том, что rtsp клиент может отваливаться и не прислать teardown - с помощью чего подобное лучше отслеживать, исходить из того, что каждый rtsp клиент обязан периодически слать options и по таймауту закрывать сокеты?
  3. вся эта кухня делается на одноплатнике, который уже занят на 75% по процессору, а хочется не только отдавать больше одного видео потока как это сделано в ffserver, но еще и разные (последние создадут нагрузку только на чтение с флешки помимо сети для случая однотипных) - однопоточный RTSP/RTP сервер потянет такие задачи для случая до 10 соединений или лучше сразу разделять 2 протокола на 2 потока?

Пы.Сы. звиняйте за многа букав )

★★★

Последнее исправление: Dimez (всего исправлений: 4)

Ты в каких-то стремных деталях закопался и не видишь сути.

RTP это просто поток медиа реализованный на UDP пакетах.

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

А так, в самом RTSP ниче нету кроме комманд, которые на сервере по запросу запускают стриминг RTP данных

Вообще, за все это время, мог бы сам написать аналог RTSP, для своих целей. Он тебе не нужен, этот протокол, если у тебя нет необходимости в каком-нибудь VLC проигрывать, у внешних клиентов.

lovesan ★★
()
Ответ на: комментарий от lovesan

FFMpeg-овская реализация RTP причем, емнип довольно всратая, и по крайней мере отправку я, по-моему, в свое время, реализовывал сам. Для аудио точно. Не помню на видео делал нет, там работы больше. Для аудио то вообще тривиально всё.

lovesan ★★
()
Ответ на: комментарий от lovesan

если у тебя нет необходимости в каком-нибудь VLC проигрывать, у внешних клиентов.

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

wolverin ★★★
() автор топика

А, и да, ни с каких железок ничего пушить нельзя. Пушить надо с медиа-прокси, на который камеры стримят в один поток(ну в два если еще аудио есть).

И еще C++ там к херам не нужен, вообще. Лучше взять нормальное что-то, хотя бы джаву или дотнет, для медиа-сервера (php - не нормальное)

lovesan ★★
()
Ответ на: комментарий от lovesan

И еще C++ там к херам не нужен

не, rtsp/rtp сервер на Сях написан, в районе 40КБ кода получилось, вполне себе не много.

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 2)

как происходит RTP обмен вопросы

Вот пока не спросишь, ничего в голову не приходит - можно же tcpdump обмена rtp посмотреть на созданном дня него порту, просто всегда думал что rtsp сервер подключается к rtsp клиенту для передачи rtp, а оказалось в этом месте запушить не удастся ) и тогда не понятно как проходит подключение через nat, если проброшен только rtsp порт

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 2)
Ответ на: комментарий от max_lapshin

Ещё не всё почистил от html и прочего от ффсервера, так он что то 150КБ занимает

И именно rtsp там вообще ни на чём кроме голого С, что мне и нужно для реализации пуша rtsp с выбрасыванием vpn

wolverin ★★★
() автор топика

и самих протоколов там всё-таки 3 штуки

- собственно RTP которым льют данные и которому всё равно что лить

- RTSP сессии, де-факто просто говорит как и откуда чего брать

- RTCP на который все забивают, контрольный. Подключился/отключился, жив, с буферами ok, звук тоже и так далее

MKuznetsov ★★★★★
()
Последнее исправление: MKuznetsov (всего исправлений: 1)
Ответ на: комментарий от max_lapshin

) ну вы же помните, что у меня никуда ничего не льется годами, время жизни ртсп сессии минут до 2х, штаное количество подключений одно, только вопрос просмотр архива длинный

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 1)

rtsp клиент может отваливаться и не прислать teardown

с этим пока остановился на том, что rtsp подключение tcp и его обрыв позволяет закрыть udp от rtp, пока другие идеи не поступят )

однопоточный RTSP/RTP сервер потянет такие задачи

в черновом варианте 6 потоков попробовал при похожей нагрузке, наверное и 10 сможет арм-ка, но это так, больше мне и не надо, так чта разделять протоколы на треды сомнительная задача

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin

единственно конечно эти потоки реализованы как юникаст, а в ффсервере есть вариант мультикаста… есть смысл заморачиваться при такой небольшой рассылке!?

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 1)