3

I am running the latest Jessie image on my pi2 B. I have gstreamer-1.0 installed with gstreamer omx plugins. gst-inspect confirms the omx plugins are installed. I am not using the X server and need to output directly to the hdmi framebuffer.

pi@raspberrypi:~ $ gst-inspect-1.0 | grep omx
omx:  omxmpeg2videodec: OpenMAX MPEG2 Video Decoder
omx:  omxmpeg4videodec: OpenMAX MPEG4 Video Decoder
omx:  omxh263dec: OpenMAX H.263 Video Decoder
omx:  omxh264dec: OpenMAX H.264 Video Decoder
omx:  omxtheoradec: OpenMAX Theora Video Decoder
omx:  omxvp8dec: OpenMAX VP8 Video Decoder
omx:  omxmjpegdec: OpenMAX MJPEG Video Decoder
omx:  omxvc1dec: OpenMAX WMV Video Decoder
omx:  omxh264enc: OpenMAX H.264 Video Encoder
omx:  omxanalogaudiosink: OpenMAX Analog Audio Sink
omx:  omxhdmiaudiosink: OpenMAX HDMI Audio Sink

I am unable to play any video back on the framebuffer. I do not seem to have any video sinks installed and I cannot seem to figure out what gstreamer packages I am missing.

pi@raspberrypi:~ $ gst-inspect-1.0 | grep sink
omx:  omxanalogaudiosink: OpenMAX Analog Audio Sink
omx:  omxhdmiaudiosink: OpenMAX HDMI Audio Sink
tcp:  multisocketsink: Multi socket sink
tcp:  multifdsink: Multi filedescriptor sink
tcp:  tcpserversink: TCP server sink
tcp:  tcpclientsink: TCP client sink
app:  appsink: AppSink
playback:  playsink: Player Sink
gio:  giostreamsink: GIO stream sink
gio:  giosink: GIO sink
coreelements:  filesink: File Sink
coreelements:  fdsink: Filedescriptor Sink
coreelements:  fakesink: Fake Sink

I know that video output to the framebuffer works, because I can use omxplayer and see the video I am trying to play. I need gstreamer to work because I need more flexibility than omxplayer can provide.

pi@raspberrypi:~ $ gst-launch-1.0 filesrc location=myvideo.mpg ! decodebin ! autovideosink
WARNING: erroneous pipeline: no element "autovideosink"

pi@raspberrypi:~ $ gst-launch-1.0 filesrc location=myvideo.mpg ! decodebin ! fbdevsink
WARNING: erroneous pipeline: no element "fbdevsink"

What am I missing to playback video on the pi framebuffer device? Is there an omxhdmivideosink?

Thanks.

  • Hi did you have any luck with this? I'm having a smiilar issue with gstreamer + framebuffer on Raspbian. Thx – Adam Plocher Jun 20 '16 at 4:56
  • no, I was not able to figure it out. I switched to omxplayer to get a temporary implementation. gstreamer would be the best solution once I get this answer. – Dan Jun 20 '16 at 21:52
3

The one way you can output directly to the frame buffer is using fbdevsink, e.g.:

gst-launch-1.0 -v videotestsrc ! fbdevsink

The fbdevsink can be found in the gstreamer1.0-plugins-bad package.

  • Any experiences with this solution sometimes yielding a blank screen? My experience is that sometimes the user can output to /dev/fb0, but other times it'll silently fail. – mpr Mar 20 '18 at 22:00
  • 1
    @mpr Yes. I had this problem on RPi 2 rev.B with Raspbian, and haven't found any solution. Only reboot helped. Though everything goes fine on RPi 3 for already an year. – Dmitry Mar 21 '18 at 11:59
  • Ok here's an interesting detail. If I set the hdmi_group and hdmi_mode in config.txt, reboot, and don't use tvservice at all, fbdevsink works. After invoking tvservice, fbdevsink no longer works. I'm currently testing on a Raspbery Pi 3 Model B V 1.2. – mpr Mar 21 '18 at 14:02
  • 1
    Ok it looks like calls to tvservice may also need a following, matching call to fbset. See here: raspberrypi.org/forums/viewtopic.php?t=52309 – mpr Mar 21 '18 at 15:13
  • Thanks. Now I have a stable behavior using this series of commands (my monitor has 1280x1024 resolution): tvservice -o, tvservice -p, fbset -depth 8, fbset -g 1280 1024 1280 1024 16 – Dmitry May 1 '18 at 11:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.