OpencV + ffmpeg 破坏无损视频帧?

OpencV + ffmpeg corrupting lossless video frames?

看来 Opencv + FFMPEG 正在破坏无损视频帧。

首先我通过这个测试确定视频是无损的

gst-launch-1.0.exe {RAW_IMAGE_SOURCE} ! video/x-raw,width=1280,height=480,format=I420 ! x264enc pass=quant quantizer=0 byte-stream=true cabac=false ! video/x-h264, stream-format=byte-stream ! avdec_h264 ! jpegenc quality=100 !  multifilesink location=frames/image_%06d.jpg

这些图像在背景的大区域中正确地复制了非常小的 RGB 值 (16,16,16)。但是,每当我用如下所示的 udpsink 替换 multifilesink 时

gst-launch-1.0.exe {RAW_IMAGE_SOURCE} ! video/x-raw,width=1280,height=480,format=I420 ! x264enc pass=quant quantizer=0 byte-stream=true ! video/x-h264, stream-format=byte-stream ! rtph264pay name=pay0 pt=96 ! udpsink host=127.0.0.1 port=6666 sync=false

并尝试使用 OpenCV + Python 打开它并使用下面的 SDP“h264rtp.sdp”

c=IN IP4 127.0.0.1
m=video 6666 RTP/AVP 96 
a=rtpmap:96 H264/90000

和这个代码

url = "h264rtp.sdp"
cap_receive = cv2.VideoCapture(url, cv2.CAP_FFMPEG)

此视频捕获返回的帧与 jpegenc 保存的图像不同。更具体地说,大的暗区从 (16,16,16) 和 (17,17,17) 到 (0,0,0)!!!

我需要提供 100% 无损视频...有什么建议吗?

如@Rotem 所述,我作为 CAPS 字符串传递的格式是错误的。更正格式解决了问题。

因为他在一定时间后没有post回答,所以我就把这个留在这里。