Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- http://answers.opencv.org/question/202017/how-to-use-gstreamer-pipeline-in-opencv/?answer=202087#post-id-202087
- How to use Gstreamer pipeline in OpenCV ?
- I have OpenCV installed with ffmpeg and gstreamer support.
- I have a working Gstreamer pipeline from my raspberry pi 3b to Ubuntu 16.04.
- This is my Gstreamer pipeline SEND script line on the Raspberry Pi 3b:
- gst-launch-1.0 -v v4l2src ! video/x-raw,width=320,height=240 ! videoconvert ! jpegenc ! rtpjpegpay ! udpsink host=192.168.1.101 port=5200
- This is my Gstreamer pipeline RECEIVER script line at the Ubuntu 16.04 end:
- gst-launch-1.0 -v udpsrc port=5200 ! application/x-rtp, encoding-name=JPEG,payload=26 ! rtpjpegdepay ! jpegdec ! videoconvert ! autovideosink
- This pipeline produces a good quality low latency video-stream.
- -----------------------------------------------
- Test this :
- import numpy as np import cv2 from multiprocessing import Process
- then:
- def send():
- cap_send = cv2.VideoCapture('videotestsrc ! video/x-raw,framerate=20/1 ! videoscale ! videoconvert ! appsink', cv2.CAP_GSTREAMER)
- out_send = cv2.VideoWriter('appsrc ! videoconvert ! x264enc tune=zerolatency bitrate=500 speed-preset=superfast ! rtph264pay ! udpsink host=127.0.0.1 port=5000',cv2.CAP_GSTREAMER,0, 20, (320,240), True)
- if not cap_send.isOpened() or not out_send.isOpened():
- print('VideoCapture or VideoWriter not opened')
- exit(0)
- while True:
- ret,frame = cap_send.read()
- if not ret:
- print('empty frame')
- break
- out_send.write(frame)
- cv2.imshow('send', frame)
- if cv2.waitKey(1)&0xFF == ord('q'):
- break
- cap_send.release()
- out_send.release()
- def receive():
- cap_receive = cv2.VideoCapture('udpsrc port=5000 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! decodebin ! videoconvert ! appsink', cv2.CAP_GSTREAMER)
- if not cap_receive.isOpened():
- print('VideoCapture not opened')
- exit(0)
- while True:
- ret,frame = cap_receive.read()
- if not ret:
- print('empty frame')
- break
- cv2.imshow('receive', frame)
- if cv2.waitKey(1)&0xFF == ord('q'):
- break
- #cap_receive.release()
- if __name__ == '__main__':
- s = Process(target=send)
- r = Process(target=receive)
- s.start()
- r.start()
- s.join()
- r.join()
- cv2.destroyAllWindows()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement