quiniouben / vban

VBAN protocol open-source implementation
GNU General Public License v3.0
450 stars 63 forks source link

vban_emitter with '-d' flag fails with 'Fatal: pulseaudio_open: open error: No such entity' #39

Closed BRUrban closed 4 years ago

BRUrban commented 4 years ago

Hello, I'm having kind of a weird issue using this on Ubuntu 18.04.

If I run vban_emitter without the device flag, it correctly connects and sends audio, but only the audio from my microphone. No system or application audio.

If I run it with the flag, either with or without a value associated (ex. both -d and -d VALUE), it hits a fatal error: Info: audio_set_stream_config: new stream config is nb channels 2, sample rate 44100, bit_fmt 16I Fatal: pulseaudio_open: open error: No such entity. It hits that error even if I uninstall and ./configure --disable-pulseaudio before re-making/installing. I'm uncertain if I'm giving it an invalid value, or if there could be a bug in the code with parsing from the device flag.

My "default" attempt has been with pulseaudio set for the backend flag, and I've been getting the stream_name value for the device flag by running pacmd list-sinks and using the "name" value of the RUNNING sink returned (alsa_card.pci-...). I haven't been able to get past this with other configurations/backend flags/device flag combinations I've tried either.

I'm running it with -l 4 and didn't see anything else in the output that looked useful for tracking this down, but let me know if any additional information would be helpful.

BRUrban commented 4 years ago

AH! I appear to have solved this for myself, and it was in fact me giving it an invalid input.

Using the "index" (integer) rather than the actual "name" (string) from pacmd list-sinks for the flag seems to have let me switch to the correct sink, and I am now sending over my audio correctly! :)

quiniouben commented 4 years ago

Hi @BRUrban , I am glad to hear that you could find your way by yourself.

alterNERDtive commented 3 years ago

Hi, not sure if I should add this here or open a new bug, but I’m assuming it is the same or a similar thing the original reporter ran into.

Device names (-d) are cut off after 64 characters. That leads to issues with pulseaudio where device names can become quite long.

$ ./vban_emitter -i 192.168.122.228 -p 6980 -s raw-mic -b pulseaudio -l 3 -d alsa_input.usb-BLUE_MICROPHONE_Blue_Snowball_201109-00.analog-stereo
./vban_emitter version 2.1.0

Info: socket_open: opening socket with port 6980
Info: socket_open with port: 6980
Info: audio_init: config is direction in, backend pulseaudio, device alsa_input.usb-BLUE_MICROPHONE_Blue_Snowball_201109-00.analog-s, buffer size 1024
Info: audio_backend_get_by_name: found backend pulseaudio
Info: audio_set_map_config: new map config is nb channels 0
Info: audio_set_stream_config: new stream config is nb channels 2, sample rate 44100, bit_fmt 16I
Fatal: pulseaudio_open: open error: No such entity

Now, as stated above going by index works; but since AFAIK it’s not guaranteed that the same device will get the same index every boot (or even if you just re-plug in case of USB devices) that’s not quite ideal.

alterNERDtive commented 2 years ago

@quiniouben any thoughts on this ^? Should I open a new issue?

Sadly every once in a while the device IDs do change, and it’s a bit of a hassle :)

I mean, I could also just submit a pull request given the quick & dirty solution is to just double the device name size or something in https://github.com/quiniouben/vban/blob/4f69e5a6cd02627a891f2b15c2cf01bf4c87d23d/src/common/audio.h#L30