Я делаю то же самое, и даже если мне не удалось заставить его работать, я могу начать указывать вам правильное направление:
Во-первых, RTSP является только каналом управления. Он похож на HTTP и используется для отправки команд типа PLAY
, PAUSE
и для настройки потоковой передачи. Реальная потоковая передача может быть реализована многими способами, наиболее распространенным из которых может быть RTP-RTCP через UDP.
Для части RTSP единственный способ понять и правильно реализовать ее - это RFC . Вы должны реализовать как минимум методы OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP и TEARDOWN.
Как только у вас есть сервер, который говорит на RTSP и соглашается с клиентом на пару портов для RTP и RTCP, вы должны открыть медиафайл, который вы хотите передать в IContainer
(направление IN), получить один поток (каждый поток должен настроить свою пару портов RTP-RTCP, одну для аудио, одну для видео и т. д.), начать чтение пакетов с ReadNextPacket(IPacket)
и использовать метод getData(IBuffer)
, чтобы заполнить пакет RTP и отправить его клиенту ,
Для управления потоком RTP (например, скоростью отправки, дрожанием, частотой потерь и т. Д.) Вы также можете использовать сокет RTCP для отправки / получения отчетов.
Опять же, отправной точкой для этих протоколов являются RFC .