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

我有一个可以很好地在Intel 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和流omx解码的素材,如果不能,我如何仍可以在程序上使用更少的CPU,这样我的RPi不会消失。

最佳答案

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

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

关于c++ - 使用Raspberry Pi转换mp4文件并将其流式传输到Viewer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59029137/

10-15 06:52
查看更多