Quantcast
Channel: OpenCV Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 2088

Help geeting OpenCV to output a videostream using gstreamer.

$
0
0
List, I am having a problem running gstreamer pipeline from Python 3 via OpenCv. I do not know gstreamer very well although I am somewhat comfortable with opencv. My issues stem from my ignorance not actual issue with Jetson TX2. I am working with Jetpack 4.4, running OpenCV 4.1.1 with gstreamer (unchanged build from Jetpack), and the Python version I am using is Python 3.6.9. On the hardware side I am using a devkit with Jetson TX2. The camera I am using is an ELP USB camera. The dev kit is headless. With this setup I am able to take pictures, record video, and stream video from the Jetson using gstreamer directly. My problem arises when I attempted to use it in python. Right now I am using a very simple python script to open my camera and stream video to another computer on the same network. My goal is to latter use a neural network I made to do detection, add bounding boxes, and pipe the post processed video via g streamer to another computer. I have tested a number of pipelines on command line and in general they work fine. When I add the pipeline to Python add attempt to use the same pipeline it errors out. For example I am using these pipelines for testing the USB web cam which is running off of a Jetson TX2. gst-launch-1.0 v4l2src device=/dev/video0 ! ‘video/x-raw, format=YUY2’ ! nvvidconv ! ‘video/x-raw(memory:NVMM), width=640, height=480’ ! omxh264enc ! h264parse ! rtph264pay config-interval=1 ! udpsink host=192.168.86.26 port=5000 gst-launch-1.0 udpsrc port=5000 ! ‘application/x-rtp, encoding-name=H264, payload=96’ ! rtph264depay ! h264parse ! avdec_h264 ! xvimagesink My goal is to get the output from my YOLO4 implementation to stream as HD264. Just trying some simple toy code I have been able to get video to write to file, albeit really bad. When I try streaming like the code below it seems to do nothing with the exception of this warning. [ WARN:0] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap_gstreamer.cpp (933) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1 Here is the toy code. import time import cv2 fps = 30 frame_width = 640 frame_height = 480 cap = cv2.VideoCapture(0) cap.set(cv2.CAP_PROP_FRAME_WIDTH, frame_width) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, frame_height) cap.set(cv2.CAP_PROP_FPS, fps) gst_str_rtp = "appsrc ! videoconvert ! x264enc tune=zerolatency bitrate=500 speed-preset=superfast ! rtph264pay ! udpsink host=192.168.86.26 port=5000" if cap.isOpened() is not True: print("Cannot open camera. Exiting.") quit() out = cv2.VideoWriter(gst_str_rtp, 0, fps, (frame_width, frame_height), True) while True: ret, frame = cap.read() if ret is True: frame = cv2.flip(frame, 1) out.write(frame) else: print("Camera error.") time.sleep(10) cap.release() I would appreciate if someone can help me understand what I need to do to open up a stream that I can pass frames to.

Viewing all articles
Browse latest Browse all 2088

Trending Articles