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

opencv中用于实时视频传输的H264解码器,opencv,ffmpeg,h.264,Opencv,Ffmpeg,H.264,我正在编写一个客户端-服务器应用程序,它可以将基于android的手机实时视频传输到服务器。从手机摄像头捕获的视频使用android提供的h264编码器编码,并通过UDP套接字传输。帧不是RTP封装的。我需要它来减少开销,从而减少延迟。 在接收器上,我需要解码传入的编码帧。UDP套接字上发送的数据不仅包含编码的帧,还包含与帧相关的一些其他信息,作为其标头的一部分。每个帧被编码为一个nal单元 我能够以字节数组的形式从接收到的数据包中检索帧。我可以将这个字节数组保存为原始h264文件,并使用vlc

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

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

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

OpenCV可以使用FFmpeg库()作为后端 录制、转换和流式播放音频和视频。FFMpeg是一个完整的, 交叉参考溶液。如果在配置时启用FFmpeg OpenCV比CMake将下载并安装二进制文件 OPENCV_源代码/3rdparty/ffmpeg/。要在运行时使用FFMpeg,您需要 必须在应用程序中部署FFMepg二进制文件

上一次,我必须和DJI PSDK一起比赛。并且它们只允许在UDP端口进行流传输udp://192.168.5.293:23003 使用H.264 因此,我编写了一个简单的ffmpeg接口,将数据流传输到PSDK。但是我必须事先调试它。所以我使用ffplay来显示这个网络流,以证明它是有效的。这是显示流的脚本。因此,您必须在此基础上作为opencv插件工作

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

在最新的opencv中,没有h.264解码器