flutter-pi
flutter-pi copied to clipboard
Gstreamer no audio output
I read in #218 that you had not yet implemented audio for gstreamer. Is this still the case? I have tried a few different video formats, but do not get any audio output.
Yep that's still the case, working on it
Great, thanks for the fast feedback.
When will this be worked on?
any updates?
@redargon @ioridev @Binozo Just implemented it, can you try with the feature/gstplayer-audio branch?
@ardera Sorry but I couldn't get it to work.
Here are my logs:
[flutter-pi] WARNING: display didn't provide valid physical dimensions. The device-pixel ratio will default to 1.0, which may not be the fitting device-pixel ratio for your display.
(flutter-pi:627): GLib-GObject-WARNING **: 17:49:37.994: g_object_set_is_valid_property: object class 'GstPlayBin' has no property named 'force-sw-decoders'
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
[gstreamer video_player] Could not query buffering state. (gst_element_query)
AL lib: (EE) ALCplaybackAlsa_reset: snd_pcm_hw_params(self->pcmHandle, hp) failed: File descriptor in bad state
[gstreamer video player] gstreamer error: code: 1, domain: gst-resource-error-quark, msg: Unable to prepare device. (debug info: ../ext/openal/gstopenalsink.c(858): gst_openal_sink_prepare (): /GstPlayBin:playbin/GstPlaySink:playsink/GstBin:abin/GstOpenALSink:openalsink0:
ALC error: Invalid Device)
[gstreamer video player] gstreamer error: code: 11, domain: gst-stream-error-quark, msg: The stream is in the wrong format. (debug info: ../gst-libs/gst/audio/gstaudiobasesink.c(1191): gst_audio_base_sink_preroll (): /GstPlayBin:playbin/GstPlaySink:playsink/GstBin:abin/GstOpenALSink:openalsink0:
sink not negotiated.)
[gstreamer video player] gstreamer error: code: 1, domain: gst-stream-error-quark, msg: Internal data stream error. (debug info: ../libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source:
streaming stopped, reason not-negotiated (-4))
[compositor] GPU does not supported the desired HW plane order.
Some UI layers may be invisible.
@Binozo Are you running raspbian buster? buster has pretty old gstreamer 1.14, bullseye has 1.18. Gstreamer has seen a lot of improvements between those versions, I'm pretty sure upgrading to bullseye will fix it.
Or, if you rely on buster, try building & installing latest gstreamer yourself.
@ardera I am using Raspbian Bullseye on a Raspberry Pi Zero 2 W.
Maybe the Zero 2 W variant causes the problem?
@Binozo can you try installing gstreamer1.0-alsa if it's not installed already?
Pi Zero 2W should work too
Now it started working :)
Thank you!
Np, I'll add that to the dependencies section then.
Has anyone managed to get audio working? I am using the audioplayers package. Audio works fine in Mac and Web.
This is the error i get on the RaspberryPi:
[audioplayers plugin] Call missing mandatory parameter player_id.
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(illegalargument, Expected `arg['player_id'] to be a string., null, null)
#0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:653:7)
#1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:315:18)
<asynchronous suspension>
#2 AudioPlayer.play (package:audioplayers/src/audioplayer.dart:131:5)
<asynchronous suspension>
#3 GameNotifier.operatorNextStep (package:save_the_penguins/app/features/game/providers/game_providers.dart:93:7)
<asynchronous suspension>
@ardera have you gotten audio to work?
I'm having exactly the same PlatformException as @ardera. Flutter version is 3.7.7.
According to 'audioplayers', this playerId is set to uuid.v4 by default.
This doesn't seem to be understood by the method channel when the audio source is set. And the PlatformException was thrown by this
I tried to set the playerId manually with a random string, but to no avail.