首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用h264编码的流式openCV帧

使用h264编码的流式openCV帧
EN

Stack Overflow用户
提问于 2019-08-27 23:36:44
回答 2查看 2.1K关注 0票数 2

我使用OpenCV和GStreamer创建了一个python程序,将帧流传输到GStreamer udpsink。代码如下:

代码语言:javascript
复制
import cv2
import config

def send():

    cap = cv2.VideoCapture(0) #open the camera
    fourcc = cv2.VideoWriter_fourcc(*'H264')
    out = cv2.VideoWriter('appsrc ! videoconvert ! x264enc tune=zerolatency noise-reduction=10000 bitrate=2048 speed-preset=superfast ! rtph264pay config-interval=1 pt=96 ! udpsink host=127.0.0.1 port=5000',fourcc,config.CAP_PROP_FPS, (800,600),True) #ouput GStreamer pipeline

    if not out.isOpened():
        print('VideoWriter not opened')
        exit(0)

    while cap.isOpened():
        ret,frame = cap.read()

        if ret:


            # Write to pipeline
            out.write(frame)

            if cv2.waitKey(1)&0xFF == ord('q'):
                break

    cap_send.release()
    out_send.release()

send()

然后,在我的终端中,我的GStreamer接收器管道是:

代码语言:javascript
复制
gst-launch-1.0 -v udpsrc port=5000 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! decodebin ! videoconvert ! autovideosink

问题是我收到的帧是这样的:https://drive.google.com/open?id=14PeiGlEfcSuzRjSPENrCjGQIQk-04OHb

我猜这一切都是关于openCV中的色彩空间转换...你觉得呢?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2019-08-28 01:26:43

使用640x480的分辨率,我可以看到一些改进,但它仍然远远不能被接受……(我把图片的链接放在这里:https://drive.google.com/open?id=1YBNEKOcC9fK6hS5RatvkO9pjKhcbh6Eu)

但不管怎样,我发现对于1280x720的分辨率来说,它是相当不错的!虽然,我的相机支持其他分辨率(如800x600或640x480),但没有像预期的那样工作…

谢谢大家!

票数 1
EN

Stack Overflow用户

发布于 2019-08-28 01:01:29

检查您的摄像头支持的视频分辨率。

示例VGA : 640 x 480

在您的gstreamer管道中使用相同的分辨率。(除非您正在进行一些重新缩放)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57678111

复制
相关文章

相似问题

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