OpenCV 中的 H264 解码器,用于实时视频传输



我正在编写一个客户端-服务器应用程序,该应用程序执行从基于Android的手机到服务器的实时视频传输。来自手机摄像头的捕获视频使用android提供的h264编码器进行编码,并通过UDP插座传输。帧未封装 RTP。我需要它来减少开销,从而减少延迟。在接收器上,我需要解码传入的编码帧。在 UDP 套接字上发送的数据不仅包含编码帧,还包含与帧相关的一些其他信息作为其标头的一部分。每个帧都编码为一个 nal 单元。

我能够从收到的数据包中检索帧作为字节数组。我可以将此字节数组保存为原始 h264 文件并使用 vlc 播放,一切正常。但是,我需要在这个框架上进行一些处理,因此需要将其与 opencv 一起使用。谁能帮我解码 opencv 中的原始 h264 字节数组?ffmpeg可以用于此吗?

简短回答:ffmpeg 和 ffplay 将直接工作。我记得 Opencv 可以建立在这两个之上。所以使用 FFMEPG/FFSHOW 插件转换为 cv::Mat 应该不难。

OpenCV可以使用FFmpeg库(http://ffmpeg.org/)作为后端 录制、转换和流式传输音频和视频。FFMpeg是一个完整的, 交叉引用解决方案。如果在配置时启用 FFmpeg OpenCV比CMake将下载并安装二进制文件 OPENCV_SOURCE_CODE/3rdparty/ffmpeg/.要在运行时使用 FFMpeg,您需要 必须将 FFMepg 二进制文件与应用程序一起部署。

https://docs.opencv.org/3.4/d0/da7/videoio_overview.html

上次,我必须玩大疆PSDK。而且它们只允许使用 H.264 在 UDP 端口 udp://192.168.5.293:23003 进行流式传输所以我写了一个简单的ffmpeg接口来流式传输到PSDK。但是我必须事先调试它。 所以我使用 ffplay 来显示这个网络流,以证明它正在工作。这是用于显示流的脚本。所以你必须在此基础上工作才能作为opencv插件工作

ffplay -f h264 -i udp://192.168.1.45:23003 

相关内容

  • 没有找到相关文章

最新更新