Я пытаюсь транслировать видео для анализа на клиентах с сервера.
Я использую vidgears для создания потока UDP ffmpeg для подключения клиентов.
Однако янеобходимо иметь централизованное количество кадров для синхронизации всех данных, которые предоставляют клиенты.
Client:
cap = cv2.VideoCapture('udp://localhost:23000')
while cap.isOpened():
print(cap.get(cv2.CAP_PROP_FRAME_COUNT))
Will only get me the frame count from the time the client connected.
Is there a way to embed a timecode or frame count when I am stream out the video so I can sync them all up?
Сервер:
i = 0
output_params = {"-vcodec": "mpeg4", '-f': 'mpegts'}
streamer = WriteGearStream(output_filename='udp://localhost:23000', compression_mode=True, logging=True, **output_params)
cap = cv2.VideoCapture(0)
while cap1.isOpened():
i+=1
ret, frame = cap.read()
cap.set(cv2.CAP_PROP_POS_FRAMES, i)
streamer.write(vis)
класс WriteGearStream (WriteGear):
def __init__(self, output_filename='', compression_mode=True, custom_ffmpeg='', logging=False, **output_params):
super(WriteGearStream, self).__init__(output_filename='temp.pm4', compression_mode=compression_mode, custom_ffmpeg=custom_ffmpeg, logging=logging, **output_params)
self.out_file = output_filename
Кто-нибудь знает, как получить количество кадров, синхронизируемых с сервером?
Спасибо!