160x120 分辨率下的 Gstreamer 瑕疵

Gstreamer artifacts at 160x120

我是 gstreamer 的新手。我有从 Raspberry pi 到计算机的流媒体平台。当我将输入帧大小更改为 160x120 时,gstreamer 出现问题(帧大小 320x240、640x480 没有问题)。

我在 Raspberry pi 中使用 gstreamer,将输入作为来自罗技 C920 的原始视频流式传输到计算机。源端的脚本(raspberry pi)是:

#!/bin/bash

WIDTH=160
HEIGHT=120

ip=192.168.0.150

v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=1
v4l2-ctl -i 1

gst-launch-1.0 -v \
rtpbin name=rtpbin v4l2 device=/dev/video0 \
! video/x-raw,width=$WIDTH,height=$HEIGHT,framerate=25/1 \
! queue \
! omxh264enc target-bitrate=900000 control-rate=3 \
! "video/x-h264,profile=high" \
! h264parse \
! queue max-size-bytes=10000000 \
! rtph264pay pt=96 config-interval=1 \
! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 \
! udpsink port=5000 host=$ip ts-offset=0 name=vrtpsink rtpbin.send_rtcp_src_0 \
! udpsink port=5001 host=$ip sync=false async=false name=vrtcpsink udpsrc port=5005 name=vrtpsrc \
! rtpbin.recv_rtcp_sink_0

视频接收器位于 windows。它使用以下命令运行。

gst-launch-1.0 udpsrc caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sampling=(string)YCbCr-4:4:4, depth=(string)8, width=(string)320, height=(string)240, colorimetry=(string)SMPTE240M, ssrc=(uint)1825678493, payload=(int)96, clock-base=(uint)4068866987, seqnum-base=(uint)24582" port=5000 ! rtph264depay ! decodebin !queue! autovideosink 

我得到这样的视频,接近下半部分有伪像。

但 320x240 的视频没有伪影,如下所示。

请帮忙。

是的,就像 mpr 所建议的那样,问题是帧大小 160x120 不能被 16 整除。修复它可以解决问题