转换 mp4 文件并将其流式传输到带有树莓派的查看器



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

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

现在我一直在研究很多,第一个答案是使用 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中运行此管道查看测试.mp4配置文件。

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

最新更新