mikebrady / shairport-sync

AirPlay and AirPlay 2 audio player
Other
7.2k stars 571 forks source link

Problem with metadata pipe #1213

Closed Drizzt321 closed 2 years ago

Drizzt321 commented 3 years ago

So I'm trying to run Snapcast server, which has support for Shairport including the metadata pipe. However, it keeps getting errors for the metadata.

Error opening metadata pipe, retrying in 500ms. Error: assign: Bad file descriptor
Exception: end of file
Metadata pipe opened: /tmp/shairmeta.10902.5000
Waiting for metadata, retrying in 2500ms
Waiting for metadata, retrying in 2500ms
...

The initiation that it does is /usr/local/bin/shairport-sync --name="Airplay1" --output=stdout --use-stderr --get-coverart --metadata-pipename=/tmp/shairmeta.10902.5000 --port=5000, and so it correctly creates the endpoint, I can connected to it from my phone fine, but the metadata errors just fill up the log.

When I actually connect to the endpoint from my phone and start playing music, the error messages go away. Is there some kind of way that a 'test' message or something for the metadata could be pushed down the pipe on startup, so clients trying to open the metadata will see something, rather than keep trying to open it up and not being able to open it properly, and so filling up log files with errors?

This is on Debian Testing (bullseye), manually compiled and installed 3.3.8 from the .tar.gz

mikebrady commented 3 years ago

Thanks for the post. It should be possible to open it and wait for something already. Have you tried a different (simpler) name? Something like shairmeta? Or another possibility is to go with the default, see what happens?

Drizzt321 commented 3 years ago

@mikebrady so apparently it's (my paraphrasing) fine to log a bunch of messages as per https://github.com/badaix/snapcast/issues/891#issuecomment-869879124 until the first time Shairport-sync is used.

Is it possible to maybe have a "null/empty" metadata update be sent through at startup, as a startup option?

mikebrady commented 3 years ago

Thanks. I'm afraid I don't really know the details of how snapcast uses the metadata pipe -- please take a look at the sample metadata reader to see how it can be used.

markferry commented 3 years ago

@Drizzt321 FWIW, I forked and patched v0.25 to lower the log message to DEBUG.

Failed to build the deb packages but building using the cmake instructions was straightforward. (Built with boost 1.77 headers so I needed an extra std::transform hack on Debian 10.9)

Makes quite a difference to the logs when you've got 7 shairport-sync instances running...

github-actions[bot] commented 2 years ago

This issue has been inactive for 60 days so will be closed 7 days from now. To prevent this, please remove the "stale" label or post a comment.