Escreva no pipeline do Gstreamer do opencv em python

Estou tentando transmitir algumas imagens do opencv usando o gstreamer e tive alguns problemas com o pipeline. Eu sou novo no gstreamer e no opencv em geral. Compilei o opencv 3.2 com o gstreamer para python3 em um raspberry pi 3. Tenho um pequeno script bash que uso com raspivid

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

Eu queria traduzir esse pipeline para usá-lo do opencv e alimentar imagens que meu algoritmo manipula. Eu fiz algumas pesquisas e percebi que posso usar o videoWriter com appsrc em vez de fdsrc, mas recebo o seguinte erro

GStreamer Plugin: Embedded video playback halted; module appsrc0 reported: Internal data flow error.

O script python que eu criei é o seguinte, pela maneira como import cv2

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()

Existe algum erro no pipeline? Eu não entendo o erro. Eu já tenho um cliente Python que pode ler o pipeline do bash e o resultado é muito bom da perspectiva da latência e dos recursos consumidos.

questionAnswers(1)

yourAnswerToTheQuestion