【问题标题】:FFmpeg stream video to rtmp from frames OpenCV pythonFFmpeg 将视频从帧 OpenCV python 流式传输到 rtmp
【发布时间】:2020-10-27 09:22:11
【问题描述】:

在工业项目的背景下,我开发了一个实时应用程序来使用 AI 算法检测人。在本地,我获取并显示使用 OPENCV 操作帧的视频。

目标是实现从Opencv帧到rtmp服务器的流视频

FFmpeg 似乎是一个很好的视角。但是,流通常是从.mp4或几个.jpg在rtmp服务器上发布流视频。

谢谢。

【问题讨论】:

    标签: python opencv ffmpeg


    【解决方案1】:

    首先,ffmpeg 用于将流推送到 rtmp 服务器。 您可以尝试为 ffmpeg cammand 创建一个子进程,并通过 PIPE 传递您的帧。

    这是一个你可以尝试的简单示例代码

    import subprocess
    import cv2
    rtmp_url = "rtmp://127.0.0.1:1935/stream/pupils_trace"
    
    # In my mac webcamera is 0, also you can set a video file name instead, for example "/home/user/demo.mp4"
    path = 0
    cap = cv2.VideoCapture(path)
    
    # gather video info to ffmpeg
    fps = int(cap.get(cv2.CAP_PROP_FPS))
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    
    # command and params for ffmpeg
    command = ['ffmpeg',
               '-y',
               '-f', 'rawvideo',
               '-vcodec', 'rawvideo',
               '-pix_fmt', 'bgr24',
               '-s', "{}x{}".format(width, height),
               '-r', str(fps),
               '-i', '-',
               '-c:v', 'libx264',
               '-pix_fmt', 'yuv420p',
               '-preset', 'ultrafast',
               '-f', 'flv',
               rtmp_url]
    
    # using subprocess and pipe to fetch frame data
    p = subprocess.Popen(command, stdin=subprocess.PIPE)
    
    
    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            print("frame read failed")
            break
    
        # YOUR CODE FOR PROCESSING FRAME HERE
    
        # write to pipe
        p.stdin.write(frame.tobytes())
    

    【讨论】:

    • 感谢您的及时回复!通过通过 PIPE 传递我的帧,我设法实时广播我的视频流。我还找到了符合 AI 项目的严格文档:github.com/kkroening/ffmpeg-python/blob/master/examples/…
    • 我对 pyhton 真的很陌生,在我的情况下,我将流式传输视频而不是网络摄像头。读取文件部分没问题。但是我无法管理网络端,我有; [rtmp @ 000002649f951c40] Cannot open connection tcp://127.0.0.1:1935错误我在windows上工作,我该怎么办,你能回答@admingyu吗
    猜你喜欢
    • 2022-01-25
    • 2011-03-23
    • 2021-10-02
    • 2016-02-26
    • 2018-06-09
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    相关资源
    最近更新 更多