Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 06.09.2023
Сообщений: 1

RTSP to UDP

06.09.2023, 17:40. Показов 1469. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем есть ip камера отдающая видео по rtsp и надо перенаправить видео по udp, как бы это реализовать на python или bash?
Я столкнулся с тем, что Я без проблем получаю rtp пакеты, а перенаправить нормально их не могу.
Суть в том, что бы можно было потом через vlc или ffplay просматривать udp стрим, что сейчас и не получается.

Мой код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import socket
import re
 
 
 
ip = "192.168.10.100"  
adr = "rtsp://admin:1234pass@192.168.10.100:554/h264/ch01/main/av_stream/"
sdp = """
v=0
o=- 0 0 IN IP4 192.168.10.100
s=RTP Stream
c=IN IP4 192.168.10.100
m=video 8001 RTP/AVP 96
a=rtpmap:96 H264/90000
"""
 
dest = ("DESCRIBE " + adr + " RTSP/1.0\r\nCSeq: 0\r\nUser-Agent: python\r\nAccept: application/sdp\r\nContent-Length: " + str(len(sdp)) + "\r\n\r\n" + sdp).encode()
setu = ("SETUP " + adr + "/trackID=1 RTSP/1.0\r\nCSeq: 1\r\nUser-Agent: python\r\nTransport: RTP/AVP;unicast;client_port=8001-8002\r\n\r\n").encode()
optio = ("OPTIONS " + adr + " RTSP/1.0\r\nCSeq: 2\r\nUser-Agent: python\r\n\r\n").encode()
play = ("PLAY " + adr + " RTSP/1.0\r\nCSeq: 3\r\nUser-Agent: python\r\nSession: SESID\r\nRange: npt=0.000-\r\n\r\n").encode()
 
 
def getPorts(searchst, st):
    pat = re.compile(searchst + "=\d*-\d*")
    pat2 = re.compile('\d+')
    mstring = pat.findall(st)[0]
    nums = pat2.findall(mstring)
    numas = []
    for num in nums:
        numas.append(int(num))
    return numas
 
 
def getLength(st):
    pat = re.compile("Content-Length: \d*")
    pat2 = re.compile('\d+')
    mstring = pat.findall(st)[0]
    num = int(pat2.findall(mstring)[0])
    return num
 
 
def printrec(recst):
    """ Красиво выводит строки RTSP """
    recs = (recst).decode().split('\r\n')
    for rec in recs:
        print(rec)
 
 
def sessionid(recst):
    """ Ищет идентификатор сессии в строках RTSP """
    recs = recst.decode().split('\r\n')
    for rec in recs:
        ss = rec.split()
        if ss[0].strip() == "Session:":
            return str(ss[1].split(";")[0].strip())
 
 
def setsesid(recst, idn):
    
    return (recst.replace("SESID", str(idn))).encode()
 
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, 554))
print("\n*** ОТПРАВКА DESCRIBE ***\n")
s.send(dest)
recst = s.recv(2048)
printrec(recst)
print("\n*** ОТПРАВКА OPTIONS ***\n")
s.send(optio)
recst = s.recv(2048)
printrec(recst)
print("\n*** ОТПРАВКА SETUP ***\n")
s.send(setu)
recst = s.recv(2048)
printrec(recst)
idn = sessionid(recst)
serverports = getPorts("server_port", recst.decode())
clientports = getPorts("client_port", recst.decode())
print("\nip,serverports", ip, serverports)
 
print("\n*** ОТПРАВКА PLAY ***\n")
play = setsesid(play.decode(), idn)
s.send(play)
recst = s.recv(2048)
printrec(recst)
print("START SEND...")
 
 
 
 
 
try:
    
    s1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    s1.bind(("", 8001))
    s1.settimeout(5)
    while True:
        
        recst = s1.recv(1536)
        if not recst:
            continue
        s1.sendto(recst, ('192.168.13.12', 4002))
        
 
 
except Exception as ex:
    print(ex)
    
s.close()
s1.close()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.09.2023, 17:40
Ответы с готовыми решениями:

500/UDP; 4500/UDP - Доступен агрессивный режим (как отключить)?
Добрый день, прошу вашей помощи! На оборудовании Cisco Catalyst, возникла такая ошибка: на портах "500/UDP - Internet Key Exchange и...

Передача с микрофона в udp и прием из udp на динамик
Собственно каким образом осуществить передачу данных с микрофона в сеть и прием из сети данных вывести на звуковое устройство. проект...

Воспроизведение rtsp
Доброго времени суток! У меня возникла проблема с воспроизведением rtsp на форме. Пытался использовать ActiveX VLCPlugin, но ни как не...

1
 Аватар для dr_arntholcz
24 / 24 / 1
Регистрация: 13.05.2016
Сообщений: 247
28.01.2024, 18:06
Дико прошу прощения за некропостинг.
Проблема решена?
vlc спокойно ест rtsp.
Если надо перекодировать есть ffmpeg.
Есть RTMP-модуль для nginx.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.01.2024, 18:06
Помогаю со студенческими работами здесь

RTSP и RTP
В чём разница RTSP протокола и RTP? Это разные вещи? или одно без другого не может быть? Если да то чтобы подключится я...

Работа с rtsp
День добрый, форум. По работе нужно разобраться с воспроизведением видео по протоколу rtsp. Можете подсказать, с чего лучше начать? Либо...

RTSP поток
Как можно просматривать RTSP поток с IP камеры помимо vlc библиотек? Слышал про aforge, opencv, emgu, но рабочего кода не нашёл

RTSP и DirectShow
Доброго времени суток. Может у кого был опыт, как реализовать видео превью с IP камеры при помощи DirectShow ?

RTSP player
Всем привет! Кто нибудь сталкивался с задачей воспроизводить потоковое видео по протоколу RTSP? Может поделитесь кодом или ссылкой? VLC не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru