【问题标题】:IP camera (h.264, rstp) + GStreamer + OpenCV (Ubuntu, Jetson TK1\Desktop)IP 摄像头 (h.264, rtsp) + GStreamer + OpenCV (Ubuntu, Jetson TK1\Desktop)
【发布时间】:2016-06-05 21:04:13
【问题描述】:

我花了很多时间试图找到答案,但我失败了。我有一个具有 RTSP 访问权限的 IP 摄像机 (h.264)。如果我从 OpenCV 打开流,它会尝试通过 ffmpeg 解码(据我所知)并破坏帧。

[h264 @ 0x1821f20] error while decoding MB 3 35, bytestream -14

据我了解,我应该使用 gstreamer 进行硬件加速(使用 NVIDIA GPU),但我找不到真正的解决方案。我该怎么办?

  1. 从控制台运行 gstreamer 并通过 OpenCV 应用从缓冲区(RAM?)获取帧?
  2. 在 OpenCV 应用中做点什么?
  3. 用 gstreamer 不用 ffmpeg 重新编译 OpenCV?

【问题讨论】:

  • 你的 OpenCV 版本是多少?
  • 我在 repo 中使用 OpenCV for Tegra (2.4.10)
  • 正如我指出我对另一个问题的回答(请参阅我上面的评论),也许更新 opencv_ffmpeg.dll 会有所帮助。你能试试看会发生什么

标签: opencv gstreamer h.264 ip-camera


【解决方案1】:

请参考http://developer.download.nvidia.com/embedded/L4T/r21_Release_v3.0/L4T_Jetson_TK1_Multimedia_User_Guide_V2.1.pdf中gstreamer1.0示例的播放示例。

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux ! h264parse ! omxh264dec ! nveglglessink –e

您可能想要使用rtspsrc 元素而不是文件源。如果你幸运的话,这样的事情可能会奏效:

gst-launch-1.0 rtspsrc location=&lt;rtsp://url&gt; ! decodebin ! omxh264dec ! nveglglessink –e

您可能需要手动插入 rtph264depay 元素或其他元素。

如果你非常幸运,它可能只适用于这样的事情:

gst-launch-1.0 playbin uri=&lt;rtsp://url&gt; –e

【讨论】:

  • 好的,我明天会测试它,但我还有问题:a) 我应该从终端运行这个命令吗?如何从 gstreamer 缓冲区获取帧? b) 在(我的意思是,使用 192 个图形核心进行计算)解码器使用之后,我可以使用 CUDA 吗?
  • 这是一个终端命令,是的。要访问缓冲区,您必须编写 GStreamer 应用程序。查看appsink 文档以了解如何操作。为什么此时不能对 CUDA 内核进行更多计算?
猜你喜欢
  • 1970-01-01
  • 2012-09-28
  • 2023-03-26
  • 1970-01-01
  • 2012-11-07
  • 1970-01-01
  • 2011-10-05
  • 2020-03-22
相关资源
最近更新 更多