【问题标题】:Converting mp4 files and streaming them to a Viewer with the Raspberry Pi使用 Raspberry Pi 转换 mp4 文件并将它们流式传输到查看器
【发布时间】:2020-03-20 14:03:27
【问题描述】:

注意:我的项目的目标是用 Raspberry Pi 4 替换常规的 Intel Core PC

我有一个在英特尔 PC 上运行良好的相机模拟。它接收 MP4 文件并使用 jpegenc 将它们编码为 jpeg。使用 GStreamer 及其插件,即 avdec_h264 和 qtdemux,效果很好。 还有一个选项可以使用 vaapih264dec 及其对应的 jpeg 编码器。这很有用,因为使用非硬件优化插件的 CPU 使用率非常高。即在 Pi 上,这个程序也能正常工作,但只有 4 个摄像头,我们在所有 4 个内核上的使用率为 100%。

现在我已经进行了很多研究,第一个答案是使用 omxh264dec,因为这是 RPi 的 vaapi 对应物(或者我假设如此)。我无法让它工作,每次我尝试任何不同的东西时,管道都不会构建。

我试过了:

-交换解复用器

-更改解码器和编码器(除了 CPU 使用的其他组合似乎有效)

-在 GStreamer 论坛上提问(刚刚被告知它不起作用,但不知道从哪里开始寻找其他地方)

-甚至尝试在没有整个程序的情况下构建管道,但即使这样似乎也不适用于 omxh264

管道:

gst-launch-1.0 filesrc location=/home/pi/test.mp4 ! qtdemux ! h264parse ! omxh264dec ! autovideosink

给出这个错误:

Leitung wird auf PAUSIERT gesetzt ...  
Leitung läuft vor …                    
FEHLER: Von Element /GstPipeline:pipeline0/GstQTDemux:qtdemux0: Internal data s$
Zusätzliche Fehlerdiagnoseinformation:
qtdemux.c(6073): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux$
streaming stopped, reason not-negotiated (-4)

所以我的问题真的是:是否有可能使用 Gstreamer 和流式传输 omxdecoded 素材,如果不是,我如何仍然可以在我的程序上使用更少的 CPU,这样我的 RPi 就不会最终死机。

【问题讨论】:

  • 我并不完全清楚你想做什么。从您的 gstreamer 命令行 - 我猜:您想在 Raspberry Pi 上播放带有 H.264 视频的本地 MP4 文件。我在 Pi 上做视频相关的东西有一段时间了。主要是 C++ 直接到 OpenMAX (omx) - 目前我在 Pi 4 上运行我的软件时遇到问题。我会在 Pi 3B+ 上尝试较旧的发行版。我会使用在 Pi4 发布之前制作的发行版。您应该能够在任何较旧的 Pi 上解码和查看 1080p30 H.264。
  • 好吧,是的,不是的。我正在尝试使用 GPU 解码 rpi 上的视频,然后通过 udp 发送它。我知道您无法在 gstreamer 命令中说出这一点,但这是最终的意图。我仅使用 autovideosink 进行测试。事实上,我并不仅限于 pi 4,但拥有 4 个内核和 4gig ram 几乎是我唯一可以让程序在任何地方运行以及我想要完成的事情。
  • 我假设您在 Pi 上运行 GUI?也许在接收器之前进行(自动)视频转换有帮助?如有疑问,请设置 GST_DEBUG=3 或 4 以检查上限协商错误。
  • @Hardy_J - 您可能喜欢 Pi 4,因为它有 4 个内核。但是您只运行一个内核,即 Linux 内核 - 除非您正在运行某种虚拟机。顺便说一句,Raspberry Pi 3 Model B 也有 4 个内核。
  • @FlorianZwoch 这是我的 GST_DEBUG 3 输出 imgur.com/917jMFZ

标签: c++ raspberry-pi gstreamer omxplayer


【解决方案1】:

Raspberry Pi 仅支持 1080p60 H.264 高配置编码/解码。 您可以在 PC 中运行此管道来查看 test.mp4 配置文件。

gst-launch-1.0 filesrc location=/home/pi/test.mp4 ! qtdemux ! h264parse ! avdec_h264 ! autovideosink -v

【讨论】:

  • 不幸的是,这是我的问题。我不想使用 avdec_h264,因为它大量使用 CPU。此管道确实适用于 RPI,但我想使用 omx 解码。有什么办法可以在树莓派上做到这一点
  • 如果您的 test.mp4 使用高配置 h264 压缩,则无法使用 omxh264enc 进行解码。
猜你喜欢
  • 1970-01-01
  • 2018-08-05
  • 1970-01-01
  • 2013-08-20
  • 2016-06-13
  • 2016-03-09
  • 1970-01-01
  • 2017-02-16
  • 2015-10-28
相关资源
最近更新 更多