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. ThxAdam Plocher– Adam Plocher2016年06月20日 04:56:57 +00:00Commented Jun 20, 2016 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– Dan2016年06月20日 21:52:25 +00:00Commented Jun 20, 2016 at 21:52
1 Answer 1
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– mpr2018年03月20日 22:00:22 +00:00Commented Mar 20, 2018 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– Dmitry2018年03月21日 11:59:51 +00:00Commented Mar 21, 2018 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– mpr2018年03月21日 14:02:02 +00:00Commented Mar 21, 2018 at 14:02
-
1Ok it looks like calls to tvservice may also need a following, matching call to fbset. See here: raspberrypi.org/forums/viewtopic.php?t=52309mpr– mpr2018年03月21日 15:13:15 +00:00Commented Mar 21, 2018 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– Dmitry2018年05月01日 11:52:20 +00:00Commented May 1, 2018 at 11:52