キーワード
- パイソン
- グストリーマー
- GPU アクセラレート
- マルチプロセッシング
こんにちは 親愛なる。
python OpenCVでGstreamerのGPUアクセラレーションとUDPストリームをしたいです。
1回の処理で送受信成功!
しかし、「gst_str」で14個のマルチプロセッシングを試みました。
エラーメッセージが表示されました
[ WARN:0] global /home/opencv-4.5.2/modules/videoio/src/cap_gstreamer.cpp (1948) writeFrame OpenCV | GStreamer warning: Error pushing buffer to GStreamer pipeline
そのため、処理の数を減らすようにしています。
3 処理まで、エラー メッセージなし。4回以上の処理でエラーが発生しました
opencvビデオライターを備えたサーバー
gst_str = 'appsrc ! videoconvert ! nvvideoconvert ! nvv4l2h264enc ! h264parse ! rtph264pay ! udpsink host=127.0.0.1 port=6000'
out = cv2.VideoWriter(gst_str, cv2.CAP_GSTREAMER, 0, int(cap.get(cv2.CAP_PROP_FPS)),(frame_width, frame_height), True)
受信機
gst-launch-1.0 udpsrc port=6000 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264,payload=96 ! rtph264depay! avdec_h264 output-corrupt=false ! videoconvert ! autovideosink
- どうすれば問題を解決できますか?
- デバッグ用の詳細エラー メッセージを取得するには? (設定済み
export GST_DEBUG=4
)
ps。GPUアクセラレーションなしでマルチプロセッシングが可能
gst_str = 'appsrc ! videoconvert ! \
tee name=t ! queue ! x264enc tune=zerolatency bitrate=500 speed-preset=superfast ! rtph264pay ! udpsink host=127.0.0.1 port=' + str(port[0]) + ' t. \
! queue ! x264enc tune=zerolatency bitrate=500 speed-preset=superfast ! rtph264pay ! udpsink host=127.0.0.1 port=' + str(port[1])
GPUアクセラレーションを行いたい。