mpv-player / mpv

🎥 Command line video player
https://mpv.io
Other
28.09k stars 2.88k forks source link

Version shipping with Celluloid flatpak may be broken for outputing to a Jack sink over Pulse. #10897

Closed gegoxaren closed 1 year ago

gegoxaren commented 1 year ago

Related: https://github.com/celluloid-player/celluloid/issues/823

If you're not using git master or the latest release, update. Releases are listed here: https://github.com/mpv-player/mpv/releases

Expected behaviour

Playing audio to the jack sink so we can hear it. And that mpv or celluloid showing up in Pulseaudio's list of streams.

Actual behaviour

Not playing audio. Actually, neither mpv or celluloid shows up at all in the Pulseaudio list of streams.

Log file

https://gist.github.com/gegoxaren/d5c492826100bce9a84792d0f455a910

Thank you for your time!

gegoxaren commented 1 year ago

Humm...

Strange... If I restart pipewire a fewtimes whilst MPV is running, it does start to play audio.

Here is the log from a test when the I restart pipewire, and audio starts working again: https://gist.github.com/gegoxaren/e0d60010618c31574ef006548d472b5e

Edit:

I figured it out: By adding "--ao=pulse" to my MPV options in Celluloid it started working again.

sfan5 commented 1 year ago

You say you want to output to pulseaudio but your log shows the pipewire AO being used, which is it?

LaserEyess commented 1 year ago

@gegoxaren your report doesn't make a lot of sense. To start, what ao do you want to use, pulse or pipewire? In 0.35.0, the default ao on linux was switched to pipewire, so if your setup was designed to use ao=pulse, it will not work unless you explicitly use that. Second, how is your audio set up? Are you really doing jack over pulse over pipewire? Or just jack over pulse? Selecting ao=pipewire bypasses anything you have setup via pulse audio even if pipewire is the pulseaudio backend.

Based on your log I'm going to assume the following

  1. You're using jack over pulse over pipewire, and it requires that you use jack via pulse, not via pipewire
  2. You have never set ao= in your log, you let it fall back to the default: pulse
  3. When you upgraded to 0.35.0 and the default changed, your setup didn't work anymore

Please correct me where I'm wrong, but if I'm right then your solution of setting ao=pulse explicitly is the correct answer.