Встраивание других данных в видеопоток UDP Python OPENCV - PullRequest
0 голосов
/ 19 мая 2019

Я пытаюсь транслировать видео для анализа на клиентах с сервера.

Я использую 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

Кто-нибудь знает, как получить количество кадров, синхронизируемых с сервером?

Спасибо!

1 Ответ

0 голосов
/ 20 июля 2019

Я автор VidGear Библиотека обработки видео Python. Это неправильный способ использования API WriteGear, и он не предназначен для этой цели, и поэтому, боюсь, не будет работать.

Пожалуйста, используйте новый VidGear NetGear API , который предназначен исключительно для синхронной передачи видеокадров между взаимосвязанными системами по сети в режиме реального времени. В этом новом API реализована высокоуровневая оболочка вокруг библиотеки Python PyZmQ, которая содержит привязки Python для ZeroMQ - высокопроизводительной библиотеки асинхронного распределенного обмена сообщениями, предназначенной для использования в распределенных или параллельных приложениях.

...