gstreamerを使ってopencv形式の画像をいくつかストリームしようとしていますが、パイプラインに問題があります。私は一般的にgstreamerとopencvの新機能です。私はOpenCVのからそれを使用するためには、このパイプラインを翻訳し、その中に画像を送りたいと思った私はraspividpythonでopencvからGstreamerパイプラインに書き込む
raspivid -fps 25 -h 720 -w 1080 -vf -n -t 0 -b 2000000 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=192.168.1.27 port=5000
で使う小さなbashスクリプトを持っているラズベリーパイ3.上のpython3のためのGStreamerとOpenCVの3.2をコンパイル私のアルゴリズムが操作します。私はいくつかの研究を行なったし、私が代わりにfdsrcのappsrcとvideoWriter使用できることを考え出したが、私は次のエラー私は道 輸入CV2によって、次のされて思い付いた
GStreamer Plugin: Embedded video playback halted; module appsrc0 reported: Internal data flow error.
Pythonスクリプトを取得
cap = cv2.VideoCapture(0)
# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out = cv2.VideoWriter('appsrc ! h264parse ! '
'rtph264pay config-interval=1 pt=96 ! '
'gdppay ! tcpserversink host=192.168.1.27 port=5000 ',
fourcc, 20.0, (640, 480))
while cap.isOpened():
ret, frame = cap.read()
if ret:
frame = cv2.flip(frame, 0)
# write the flipped frame
out.write(frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()
パイプラインにエラーはありますか?私はエラーを理解していない。私はすでにbashパイプラインから読み込むことができるPythonクライアントを持っており、その結果はレイテンシの観点からかなり良く、リソースを消費します。