OpenCV RTP 解码

Posted

技术标签:

【中文标题】OpenCV RTP 解码【英文标题】:OpenCV RTP Decoding 【发布时间】:2013-06-13 18:24:59 【问题描述】:

有什么方法可以读取 RTP 数据包(将通过预先构建的 tcp 连接从服务器发送)并对其进行解码以创建要显示的 h264 流?数据将作为字符缓冲区发送/接收,但可以在接收时轻松更改/转换。不幸的是,我还没有在 OpenCV 中看到这样做的方法。

编辑:在openCV(读取)中不需要这样做,但它需要在解码后能够被openCV数据类型(Mat/IplImage)接收。我记得看到过一个关于创建流的内容,并且会尝试再次找到它,但是有谁知道一种从每个数据包创建单独帧的方法吗?

【问题讨论】:

【参考方案1】:

您将需要一个 RTP depayloader 用于您的特定流。

RTP(针对 UDP - 即:面向数据包的协议)在数据包(传输时)和帧之间没有 1:1 映射。大多数情况下,单个帧将通过多个数据包传输(以太网帧(不要与您的图像帧混淆)通常限制为大约 1500 字节,这只会产生很小的图像......)

将有效负载块拆分和重新组合到网络数据包中是 RTP payloader resp 的任务。 depayloader.

最简单的方法可能是通过gstreamer,它已经为 h.264 提供了(de)payloaders

【讨论】:

以上是关于OpenCV RTP 解码的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg解码到opencv Mat中

opencv python图片编码解码

有关opencv无法解码网络摄像头rtsp流的解决办法

Opencv 编解码器选择对话框未显示

OpenCV videoWriter编解码器问题

调用opencv的函数cvCreateVideoWriter生成的视频太大(几G),怎么生成小的视频?