Raspberry Pi 3 with bullseye - Pipeline not running when audio and video, no video to HDMI, playbin unstable
Describe your issue
Unable to play back file with audio and video on a Raspberry Pi 3 with Debian bullseye.
Expected Behavior
playback of mp4 (h264 / aac) file with audio and video using hardware accelleration to HDMI output without using X11 or QT (no desktop environment)
Observed Behavior
- videotestsrc works
- audio works
- playbin works, but unstable and no video output
- discrete pipeline outputs audio when video is omitted but pipeline does not start to play if both (audio and video) should be output
Setup
- Debian bullseye (32bit or 64bit)
- Raspberry Pi 3
- 1.18.4 or 1.19.2
- Command:
gst-launch-1.0 filesrc location=something.mp4 ! qtdemux name=demuxer ! demuxer.video_0 ! queue ! decodebin ! videoconvert ! videoscale ! kmssink ! demuxer.audio_0 ! queue ! decodebin ! audioconvert ! audioresample ! autoaudiosink
Steps to reproduce the bug
- Install Debian bullseye (32bit or 64bit) I used the Raspberry Pi - Imager and Debian bullseye lite 32bit/64bit
apt update && apt upgrade
rpi-update
- Edit
/boot/config.txt
and reboot- hdmi_group=2
- hdmi_mode=82
- hdmi_drive=2
- dtoverlay=vc4-kms-v3d
- max_framebuffers=2
- gpu_mem=128
apt install gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-libav gstreamer1.0-nice gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-python3-plugin-loader gstreamer1.0-tools gstreamer1.0-plugins-base-apps
- run command from Setup
-
gst-launch-1.0 videotestsrc ! kmssink
Shows testsource without problems -
gst-play-1.0 --videosink kmssink something.mp4
Plays back sound. Video gets visible after doing a seek with cursor keys. Stopps sporadically with error see 6.4 -
playbin
manages to set pipeline to PLAYING, but no video either. Stopps sporadically with error see 6.4 ERROR No valid frames decoded before end of stream for file:///something.mp4 ERROR debug information: ../gst-libs/gst/video/gstvideodecoder.c(1416): gst_video_decoder_sink_event_default (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/v4l2h264dec:v4l2h264dec0: no valid frames found
-
How reproducible is the bug?
I tried with fresh installs of Debian bullseye 32bit and 64bit on Raspberry Pi 3
I tried two different PI3 boards and two different SD-cards
I tried packages from repository (1.18.4) and compiled from source (git) (1.19.2)
I tried gst-launch-1.0 and Python API
all with the same results
Screenshots if relevant
Solutions you have tried
see How reproducible...
Related non-duplicate issues
Additional Information
##### Edit (2022-02-24)
Tried following variations:
- Debian buster (32bit): Playback basically possible but no HW accel with or without KMS driver (didn't try with OMX, because of its deprecation)
- Debian bullseye (32bit) without firmware update (rpi-update): Same behaviour as described already but it seems that there is more smearing/stuttering and frame errors. To verify, updated firmware after test and was able to recognize an improvement.
Edited by belowtoxic