【问题标题】:running gstreamer pipeline command from opencv videowriter api to stream continuous image to hlssink从opencv videowriter api运行gstreamer管道命令以将连续图像流式传输到hlssink
【发布时间】:2020-04-25 06:52:26
【问题描述】:

我正在尝试使用 opencv videowriter api 从视频卡设备流式传输连续图像,下面是执行该操作的 opencv 代码 sn-p,我的问题是我得到帧但没有得到任何 index.m3u8 文件在 /var/www 文件夹中生成,我是 opencv 的新手,gstreamer 无法确定这是否可以通过 opencv 实现,或者我必须使用其他一些机制

输入视频设备是只支持MJEPG编解码器的显卡

import cv2

cap = cv2.VideoCapture('/dev/video0')
framerate = 30.0

out = cv2.VideoWriter('appsrc ! image/jpeg ! '
                      'jpegdec ! x264enc tune=zerolatency ! '
                      'mpegtsmux ! hlssink location=/var/www/segment-%05d.ts '
                      'playlist-location=/var/www/index.m3u8 max-files=20 target-duration=15',
                      0, framerate, (640, 480))

while cap.isOpened():
    ret, frame = cap.read()
    if ret:
        out.write(frame)
    else:
        break

# Release everything if job is finished
cap.release()
out.release()

【问题讨论】:

    标签: python opencv gstreamer http-live-streaming hlsl


    【解决方案1】:

    OpenCv 的VideoWriter 仅在其 GStreamer 接口上支持 BGR 帧。可能VideoCapture 也会将图像转换为 BGR。

    因此,您无需在 gstreamer 管道中解码 jpeg。但是x264enc 并不总是接受 BGR 作为输入,所以你应该在appsrc 和 x264enc 之间添加videoconvert`

    t = cv2.VideoWriter('appsrc ! videoconvert ! x264enc tune=zerolatency ! '
                          'mpegtsmux ! hlssink location=/var/www/segment-%05d.ts '
                          'playlist-location=/var/www/index.m3u8 max-files=20 target-duration=15',
                          0, framerate, (640, 480))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 2021-03-13
      • 2017-05-22
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多