首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从帧到rtmp的FFmpeg流视频OpenCV python

从帧到rtmp的FFmpeg流视频OpenCV python
EN

Stack Overflow用户
提问于 2020-07-07 07:10:19
回答 1查看 9.9K关注 0票数 3

在非远程项目的背景下,我开发了一个实时应用程序来使用人工智能算法来检测人。在本地,我得到和显示的视频与OPENCV与帧操作。

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

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

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-09 03:44:57

首先,ffmpeg具有将流推到rtmp服务器的功能。您可以尝试为ffmpeg cammand创建一个子进程,并通过管道传递您的帧。

下面是一个您可以尝试的简单示例代码

代码语言:javascript
复制
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())
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62769828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档