mpd httpd не отвечает на tcp порт

Вопрос или проблема

У меня есть домашний сервер с музыкальными файлами, хранящимися локально на этом сервере.

У меня на этом домашнем сервере установлены MPD и ncmpcpp.

Я пытаюсь создать прототип, чтобы затем пройти через тривиальный шаг проброса портов, чтобы к этому можно было получить доступ откуда угодно, но у меня довольно много проблем даже с тем, чтобы это заработало локально. Я работаю на удаленной машине, но вся работа, которую я сделал сегодня утром, происходила в удаленной оболочке внутри домашнего сервера…

Я убил и отключил демон для mpd и запустил его так:
mpd --stdout --no-daemon --verbose ~/.config/mpd/mpd.conf и получил этот вывод:

config_file: loading file .config/mpd/mpd.conf
path: SetFSCharset: fs charset is:
libsamplerate: libsamplerate converter 'Fastest Sinc Interpolator'
vorbis: Xiph.Org libVorbis 1.3.5
opus: libopus 1.1.4
sndfile: libsndfile-1.0.27
simple_db: reading DB
curl: version 7.52.1
curl: with OpenSSL/1.0.2k
avahi: Initializing interface
avahi: Client changed to state 101
avahi: Client is CONNECTING
state_file: Loading state file /home/dale/.config/mpd/state

Похоже, что порт что-то делает, или по крайней мере готов что-то делать для MPD:

~ ➭ sudo netstat -lnp | sudo grep 8002
tcp        0      0 127.0.0.1:8002          0.0.0.0:*               LISTEN      21596/mpd     

Однако, когда я запускаю ncmpcpp (с той же машины, на которой работает MPD, на домашнем сервере… помните, я подключен по ssh), я получаю следующую жалобу:

ncmpcpp: Failed to resolve host name

У меня есть следующий файл ~/.config/mpd/mpd.conf:

music_directory         "/mnt/media/Music"
playlist_directory      "~/.config/mpd/playlists"
db_file             "~/.config/mpd/database"
log_file            "~/.config/mpd/log"
pid_file            "~/.config/mpd/pid"
state_file          "~/.config/mpd/state"
sticker_file            "~/.config/mpd/sticker.sql"
#mixer_type        "software"
#█▓▒░ opts
bind_to_address         "127.0.0.1"
port                "6601"
log_level           "default"
gapless_mp3_playback        "yes"
filesystem_charset      "UTF-8"
#█▓▒░ io
input {
        plugin "curl"
}
audio_output {
    type        "alsa"
    name        "My ALSA Device"
    device      "hw:0,0"    # optional
    mixer_type      "hardware"  # optional
    mixer_device    "default"   # optional
    mixer_control   "PCM"       # optional
    mixer_index "0"     # optional
}
#audio_output {
#   type        "alsa"
#   name        "audio"
#}
audio_output {
    type        "fifo"
    name        "visualizer"
    path        "/tmp/mpd.fifo"
    format      "44100:16:2"
}
audio_output {
    type        "httpd"
    name        "My HTTP Stream"
    encoder     "vorbis"        # optional
        bind_to_address "127.0.0.1"
    port        "8002"
#   quality     "5.0"           # do not define if bitrate is defined
    bitrate     "128"           # do not define if quality is defined
    format      "44100:16:1"
    always_on       "yes"           # prevent MPD from disconnecting all listeners when playback is stopped.
    tags            "yes"           # httpd supports sending tags to listening streams.
}

`

У меня есть это в моем файле ~/.ncmpcpp/config:

ncmpcpp_directory = "~/.ncmpcpp"
#lyrics_directory = "~/.lyrics"
external_editor = "/usr/bin/vim"

# █▓▒░ Настройки MPD
mpd_crossfade_time = "3"
mpd_music_dir = "/mnt/media/Music"
mpd_host = "127.0.0.1:8002"
mpd_port = "8002"

Есть идеи, какие свойства я неправильно настроил?

Спасибо

Вы неправильно понимаете, для чего используются порты, которые вы настроили.

6601 (“порт” в вашем конфигурационном файле MPD) используется приложениями, которые намереваются общаться с MPD по протоколу MPD – то есть приложениями, которые контролируют воспроизведение, музыкальную базу данных и т. д.

8002 (“порт” в секции “audio_output” в вашем конфигурационном файле MPD) – это порт, на котором MPD передает аудиопоток vorbis по HTTP.

Поскольку ncmpcpp является клиентом для управления MPD, а не для прослушивания аудиопотока, который он передает, вам нужно настроить ncmpcpp для подключения к порту 6601 (в настройке mpd_port).

Ответ или решение

Когда вы сталкиваетесь с проблемой, связанной с тем, что MPD (Music Player Daemon) не отвечает на TCP-порт, важно правильно интерпретировать конфигурацию вашего сервера и клиента. На вашем домашнем сервере установлен MPD и используете ncmpcpp в качестве клиента, но возникает проблема с подключением по порту.

Настройка MPD и ncmpcpp

1. Конфигурация MPD

Из вашей конфигурации MPD видно, что вы указали два порта:

  • 6601 (для управления MPD).
  • 8002 (для потоковой передачи аудио через HTTP).

Важно понимать, что порт 6601 предназначен для работы с клиентами, использующими протокол MPD, которые управляют воспроизведением, плейлистами и базой данных музыки. Ваша конфигурация MPD содержит строку:

port "6601"

Это значит, что любые клиенты, такие как ncmpcpp, должны подключаться к этому порту, чтобы взаимодействовать с MPD.

2. Настройка ncmpcpp

В конфигурации ncmpcpp вы указали:

mpd_host = "127.0.0.1:8002"
mpd_port = "8002"

Однако это значение некорректно, так как ncmpcpp должен подключаться к порту 6601, а не 8002. Следовательно, вам необходимо изменить эти строки на:

mpd_host = "127.0.0.1"
mpd_port = "6601"

3. Проверка запуска MPD

Вы запускали MPD с параметрами для отладки, используя:

mpd --stdout --no-daemon --verbose ~/.config/mpd/mpd.conf

Это хороший подход для выявления возможных ошибок, так как позволяет видеть логи в реальном времени. Убедитесь, что вы видите, что MPD успешно загружает файлы конфигурации и что нет сообщений об ошибках.

4. Проверка открытых портов

С выводом команды netstat вы наблюдаете, что порт 8002 слушает на 127.0.0.1, что подтверждает, что этот порт активен и настроен для потоковой передачи. Убедитесь, что в конфигурации audio_output все параметры заданы правильно и MPD действительно может начать потоковую передачу.

Заключение

Таким образом, проблема в том, что ncmpcpp пытается подключиться к неправильному порту для управления MPD. Убедитесь, что исправили конфигурацию клиента, чтобы использовать порт 6601 для связки с MPD, и вы сможете управлять воспроизведением музыки без проблем.

Дополнительно, если вы планируете доступ к MPD из внешней сети, после того как все будет работать локально, убедитесь, что вы правильно настроили маршрутизацию и защищены от несанкционированного доступа, прежде чем открывать свои порты в файрволе вашего роутера.

Оцените материал
Добавить комментарий

Капча загружается...