【问题标题】:H264 decoder in opencv for real time video transmissionopencv中的H264解码器用于实时视频传输
【发布时间】:2014-05-16 19:31:36
【问题描述】:

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

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

【问题讨论】:

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

标签: opencv ffmpeg h.264


【解决方案1】:

简短回答:ffmpeg 和 ffplay 将直接工作。我记得 Opencv 可以建立在这 2 个之上。所以使用 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

上次,我要玩 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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2016-07-12
    相关资源
    最近更新 更多