使用 opencv 和 GStreamer 将视频从 python 流式传输到 aws kinesis

问题描述 投票:0回答:1

我正在尝试使用 OpenCV 和 GStreamer 将视频流式传输到 AWS Kinesis Video Streams,但无法使其正常工作。我已经设置了一个名为 ExampleStream 的 Kinesis 视频流,并且我想使用 numpy 数组作为视频帧的源。

这是我正在使用的代码:

import cv2
import numpy as np
import time
from Utils.utils import get_aws_cred

access_key, secret_key, region = get_aws_cred()

pipeline = (
    f"appsrc ! videoconvert ! video/x-raw,format=BGR,width={400},height={400},framerate=25/1 ! videoconvert ! video/x-raw ! x264enc key-int-max=45 ! video/x-h264,stream-format=avc,alignment=au,profile=baseline ! kvssink stream-name=ExampleStream storage-size=512 aws-region={region} access-key={access_key} secret-key={secret_key}  max-latency=1 buffer-duration=1"
)

out = cv2.VideoWriter(pipeline, cv2.CAP_GSTREAMER, 0, float(25), (400, 400), True)

while True:
    frame = (np.random.rand(400, 400, 3) * 255).astype(np.uint8)
    out.write(frame)
    time.sleep(0.04)

没有错误,也没有我可以调试来解决的问题。另外,当我从终端运行管道时,它可以工作,所以我假设 aws 中的配置是正确的。我通过终端运行的管道是:

"gst-launch-1.0 videotestsrc is-live=true ! video/x-raw,framerate=25/1 ! videoconvert ! x264enc  bframes=0 key-int-max=45 bitrate=500 ! video/x-h264,stream-format=avc,alignment=au,profile=baseline ! kvssink stream-name=ExampleStream storage-size=512 access-key=$AWS_ACCESS_KEY_ID secret-key=$AWS_SECRET_ACCESS_KEY aws-region=$AWS_REGION max-latency=1 buffer-duration=1"

知道管道出了什么问题或如何调试它吗?

python opencv gstreamer amazon-kinesis-video-streams
1个回答
0
投票

这是因为你的opencv不支持gstreamer。用这个来检查

print(cv2.getBuildInformation())

如果它说否,您需要从源代码构建opencv。 检查这个

最后一件事,你不能使用 Python3.11 构建 opencv。会有一些依赖性问题。

© www.soinside.com 2019 - 2024. All rights reserved.