1

注意:我的项目的目标是用 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 就不会最终死亡。

4

1 回答 1

0

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

gst-launch-1.0 filesrc location=/home/pi/test.mp4 ! qtdemux ! h264parse ! avdec_h264 ! autovideosink -v
于 2019-11-29T09:50:12.637 回答