[Python] Piping pi's opencv video to ffmpeg for Youtube streaming

Discussão em 'Python' iniciado por Stack, Junho 15, 2025.

  1. Stack

    Stack Membro Participativo

    This is a small python3 script reading off picam using OpenCV :

    #picamStream.py

    import sys, os
    from picamera.array import PiRGBArray
    from picamera import PiCamera
    import time
    import cv2

    # initialize the camera and grab a reference to the raw camera capture
    camera = PiCamera()
    camera.resolution = (960, 540)
    camera.framerate = 30
    rawCapture = PiRGBArray(camera, size=(960, 540))

    # allow the camera to warmup
    time.sleep(0.1)

    # capture frames from the camera
    for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):

    image = frame.array

    # ---------------------------------
    # .
    # Opencv image processing goes here
    # .
    # ---------------------------------

    os.write(1, image.tostring())

    # clear the stream in preparation for the next frame
    rawCapture.truncate(0)

    # end


    And I am trying to pipe it to ffmpeg to Youtube stream

    My understanding is that I need to reference below two commands to somehow come up with a new ffmpeg command.


    Piping picam live video to ffmpeg for Youtube streaming.

    raspivid -o - -t 0 -vf -hf -w 960 -h 540 -fps 25 -b 1000000 | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264 -i - -vcodec copy -acodec aac -ab 128k -g 50 -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/[STREAMKEY]


    Piping OPENCV raw video to ffmpeg for mp4 file.

    python3 picamStream.py | ffmpeg -f rawvideo -pixel_format bgr24 -video_size 960x540 -framerate 30 -i - foo.mp4
    ​

    So far I've had no luck. Can anyone help me with this?

    Continue reading...

Compartilhe esta Página