“Internal data stream error.” when using omxh264enc
Nicolas Dufresne
nicolas at ndufresne.ca
Fri Nov 6 17:40:05 UTC 2020
Le vendredi 06 novembre 2020 à 17:24 +0100, Homan Maps a écrit :
>
> Hey,
>
> I have asked this question before on Stackoverflow, but I think it
> might be better targeted to ask it here.
Using rpicamsrc element, you can get feed from the camera directly
encoded as H264. Considering the age of the RPI used, this is likely
the only viable option. This element is now upstream into gstreamer
1.18, but used to be hosted here (in case you have an older gst and
need to build it):
https://github.com/thaytan/gst-rpicamsrc
>
> I am currently trying to convert a live feed from a Raspberry Pi
> camera to H264 and store it as a mp4 video using gstreamer. Since I
> am using a Raspberry Pi 1, I need to use the hardware accelerated
> video encoding as otherwise the encoder cannot keep up.
> I tried the following pipeline, which I feed manually with RGB image
> data:
> appsrc name=src format=time is-live=true caps=video/x-
> raw,format=(string)RGB,width=640,height=480,bpp=24,depth=24,framerate
> =20/1 ! autovideoconvert ! queue ! omxh264enc ! mp4mux ! filesink
> location=output.mp4
> However, it fails with the following output:
> 0:00:01.193743067 2469 0x1f5b320 WARN autoconvert
> gstautoconvert.c:1048:gst_auto_convert_sink_query:<autoconvertchild>
> Got query allocation while no element was selected, letting through
> 0:00:01.205271623 2469 0x1f5b2c0 WARN omxvideoenc
> gstomxvideoenc.c:2944:gst_omx_video_enc_propose_allocation:<omxh264en
> c-omxh264enc0> allocation query does not contain caps
> 0:00:02.109098855 2469 0x1f5b320 WARN v4l2bufferpool
> gstv4l2bufferpool.c:1189:gst_v4l2_buffer_pool_dqbuf:<v4l2convert0:poo
> l:src> Driver should never set v4l2_buffer.field to ANY
> 0:00:02.172643411 2469 0xa2703200 WARN GST_PADS
> gstpad.c:4226:gst_pad_peer_query:<omxh264enc-omxh264enc0:src> could
> not send sticky events
> 0:00:02.193615605 2469 0xa2703200 WARN omxvideoenc
> gstomxvideoenc.c:1602:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0>
> error: Internal data stream error.
> 0:00:02.197108471 2469 0xa2703200 WARN omxvideoenc
> gstomxvideoenc.c:1602:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0>
> error: stream stopped, reason not-negotiated
> 0:00:02.329828367 2469 0x1f7eaa0 WARN bufferpool
> gstbufferpool.c:1394:gst_buffer_pool_set_flushing:<v4l2convert0:pool:
> sink> can't change flushing state of inactive pool
> 0:00:02.333992206 2469 0x1f7eaa0 WARN bufferpool
> gstbufferpool.c:1394:gst_buffer_pool_set_flushing:<v4l2convert0:pool:
> sink> can't change flushing state of inactive pool
> Curiously, if I replace omxh264enc with the non-accelerated version
> x264enc, it works (although it falls behind after a couple of
> frames).
> I assume that the warnings right before Internal data stream error
> might give some indication to what is actually going wrong, but I
> cannot make much sense out of them.
>
> The full code can be found here: https://pastebin.com/pgr940yu, as
> well as the full debug output of that code here:
> https://pastebin.com/CLwAfxMG.
> Thanks a lot in advance!
> Best, Homan
>
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
More information about the gstreamer-devel
mailing list