Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gstreamer no audio output #233

Open
redargon opened this issue Feb 28, 2022 · 15 comments
Open

Gstreamer no audio output #233

redargon opened this issue Feb 28, 2022 · 15 comments
Labels
enhancement New feature or request p: gstreamer video player Issues related to the gstreamer video player plugin.

Comments

@redargon
Copy link

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.

@ardera
Copy link
Owner

ardera commented Feb 28, 2022

Yep that's still the case, working on it

@ardera ardera added enhancement New feature or request p: gstreamer video player Issues related to the gstreamer video player plugin. labels Feb 28, 2022
@redargon
Copy link
Author

redargon commented Mar 1, 2022

Great, thanks for the fast feedback.

@ioridev
Copy link

ioridev commented May 18, 2022

When will this be worked on?

@Binozo
Copy link

Binozo commented Oct 9, 2022

any updates?

@ardera
Copy link
Owner

ardera commented Nov 8, 2022

@redargon @ioridev @Binozo Just implemented it, can you try with the feature/gstplayer-audio branch?

@Binozo
Copy link

Binozo commented Nov 28, 2022

@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.

@ardera
Copy link
Owner

ardera commented Nov 28, 2022

@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.

@Binozo
Copy link

Binozo commented Nov 28, 2022

@ardera I am using Raspbian Bullseye on a Raspberry Pi Zero 2 W.

Maybe the Zero 2 W variant causes the problem?

@ardera
Copy link
Owner

ardera commented Nov 28, 2022

@Binozo can you try installing gstreamer1.0-alsa if it's not installed already?

Pi Zero 2W should work too

@Binozo
Copy link

Binozo commented Nov 28, 2022

Now it started working :)

Thank you!

@ardera
Copy link
Owner

ardera commented Nov 28, 2022

Np, I'll add that to the dependencies section then.

ardera added a commit that referenced this issue Nov 28, 2022
- otherwise playbin will fail to initialize
- see #233 (comment)
@tobiasht
Copy link
Contributor

tobiasht commented Mar 2, 2023

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>

@tobiasht
Copy link
Contributor

@ardera have you gotten audio to work?

@innomatica
Copy link

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.

ardera added a commit that referenced this issue Jul 17, 2023
- otherwise playbin will fail to initialize
- see #233 (comment)
ardera added a commit that referenced this issue Aug 22, 2023
- otherwise playbin will fail to initialize
- see #233 (comment)
ardera added a commit that referenced this issue Aug 22, 2023
- otherwise playbin will fail to initialize
- see #233 (comment)
@edlman
Copy link

edlman commented Jan 20, 2025

Hello, I installed flutter-pi and run an app with VideoPlayer (using pkg flutterpi_gstreamer_video_player). It plays video, but there is no audio. When I play the same video file on the same RPi in different player (VLC, QtMediaPlayer, Chrome browser), it works. So the audio settings (alsa or whatever) is ok.
I'm confused and don't know how to fix it.
My RPi is running RasbperryPi OS based on Debian 11 (Bullseye), latest flutter pi (downloaded and built yesterday), Flutter app is built using latest Flutter 3.27.2
Update (25th Jan) - the same applies to Debian 12 (Bookworm), same flutter pi, same Flutter app. When I play the same video file using gst123 (gstreamer player), audio track is playing. So gstreamer can play the movie, there must be something in the channel between flutter and gstreamer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request p: gstreamer video player Issues related to the gstreamer video player plugin.
Projects
None yet
Development

No branches or pull requests

7 participants