人々はncmpcppのビジュアライザーを本当に気に入っているように見えるので、これは次々と登場します
信頼性の高いFIFOシンクを作成するための秘訣は2つあります。 非ブロッキング書き込みを使用する必要があります。つまり、リーダーがない限り、書き込みソケットを開くことは失敗します。したがって、リーダーも必要です。 次に、外部リーダーが遅れているか存在しないためにバッファーがいっぱいになった場合、内部リーダーはバッファーをクリアする必要があります。
次のコードは、この基本的な要点を示していますが、エラー処理に関してはさらに作業が必要です。
import errno
import os
import stat
LINUX_FIFO_BUFFER_SIZE = 65536
class FifoStreamer(object):
def __init__(self, location):
self.location = location
self.reader = None
self.writer = None
def create(self):
try:
mode = os.stat(self.location).st_mode
if not stat.S_ISFIFO(mode):
raise Exception('File exists but is not a FIFO')
except OSError as e:
if e.errno == errno.ENOENT:
os.mkfifo(self.location)
else:
raise
# TODO: wrap in could not open reader / writer?
self.reader = os.open(self.location, os.O_NONBLOCK | os.O_RDONLY)
self.writer = os.open(self.location, os.O_NONBLOCK | os.O_WRONLY)
def close(self):
# TODO: make closing robust
os.close(self.writer)
os.close(self.reader)
def write(self, data):
while data:
try:
written = os.write(self.writer, data)
data = data[written:]
except OSError as e:
if e.errno == errno.EINTR:
continue
elif e.errno in (errno.EAGAIN, errno.EWOULDBLOCK):
self.flush()
else:
raise
def flush(self):
while True:
try:
if not os.read(self.reader, LINUX_FIFO_BUFFER_SIZE):
break
except OSError as e:
if e.errno in (errno.EAGAIN, errno.EWOULDBLOCK):
break
elif e.errno == errno.EINTR:
continue
else:
raise
上記のコードをGStreamerと統合する必要がありますが、実際にそれを実行します。 0.10を想定すると、これは実際には非常に実行可能です。私が躊躇している理由は、1.xへの移行を計画しており、girバインディングがPythonで要素を作成するのに適していないためです。 1.xのこのコードの場合、問題は、BaseSinkが検出することを期待するパッドテンプレートを作成できないことに要約されます。 これをプレーンな要素として作成することは可能かもしれませんが、BaseSinkを処理する方法の多くを再実装する必要があります。これにより、正しく機能するようになります。
import gobject
import pygst
pygst.require('0.10')
import gst
class FifoSink(gst.BaseSink):
__gstdetails__ = (
'FifoSink',
'Sink',
'Sink designed to handle FIFO output.',
'Mopidy')
__gsttemplates__ = (gst.PadTemplate('sink', gst.PAD_SINK, gst.PAD_ALWAYS,
gst.caps_new_any()),)
# TODO: don't allow changing location in flight, i.e. create getter/setter
location = gobject.property(type=str)
def __init__(self):
gst.BaseSink.__init__(self)
self.streamer = None
def do_start(self):
self.streamer = FifoStreamer(self.location)
self.streamer.create()
return True
def do_stop(self):
self.streamer.close()
return True
def do_render(self, buf):
try:
self.streamer.write(bytes(buf))
return gst.FLOW_OK
except OSError as e:
self.error("Failed: %s", e)
return gst.FLOW_ERROR
gobject.type_register(FifoSink)
gst.element_register(
FifoSink, 'fifosink', gst.RANK_MARGINAL)
if __name__ == '__main__':
import gobject
gobject.threads_init()
output = """
capsfilter caps="audio/x-raw-int,width=16,rate=44100,channels=1" !
tee name=t
t. ! queue ! alsasink
t. ! queue ! fifosink location=/tmp/test2.fifo
"""
sink = gst.parse_bin_from_description(
output, ghost_unconnected_pads=True)
playbin = gst.element_factory_make('playbin2')
playbin.set_property('audio_sink', sink)
これをテストする際に遭遇した問題の1つは、実際にはncmpcppで期待されるオーディオ形式と一致することを忘れていたことです。したがって、mono / stereoが実際に一致することを確認してください。
これはどこに行きましたか? これはメインパッケージに追加されますか?
これは、GStreamer 1.0に変換する必要があるため、作業中ではありません。これまでのすべての実験で、Pythonでカスタム要素を実行する際の問題が明らかになりました。 それをすべて解決する方法は他にもありますが、私が取り組む時間はありません。
FIFOサポートが追加されるのを見たいです:)
ncmpcppの音楽ビジュアライザーをmopidyで動作させる方法を探しているところを見つけました。 私は賛成です。
はい、それは私がこれを見つけたのと同じ理由です。 それは本当に素晴らしいでしょう
ストリーミングされた音楽を視覚化できる、
2014-11-06 2:19 GMT-05:00ブレイク[email protected] :
ncmpcppの音楽ビジュアライザーを取得する方法を探しているのを見つけました
mopidyで動作します。 私は賛成です。—
このメールに直接返信するか、GitHubで表示してください
https://github.com/mopidy/mopidy/issues/775#issuecomment-61936376 。
gstreamerの視覚化プラグインがありますが、それらを使用するだけではいけませんか?
2014年11月6日08:35、「DiegoBerrocal」 [email protected]は次のように書いています。
はい、それは私がこれを見つけたのと同じ理由です。 それは本当に素晴らしいでしょう
ストリーミングされた音楽を視覚化できる、
2014-11-06 2:19 GMT-05:00ブレイク[email protected] :
ncmpcppの音楽ビジュアライザーを入手する方法を探しているのを見つけました
に
mopidyで動作します。 私は賛成です。—
このメールに直接返信するか、GitHubで表示してください
https://github.com/mopidy/mopidy/issues/775#issuecomment-61936376 。
—
このメールに直接返信するか、GitHubで表示してください
https://github.com/mopidy/mopidy/issues/775#issuecomment-62007426 。
これらは次のリリースでリリースされる予定であることに注意してください。
これに取り組んでいる人はいますか? ncmpcppビジュアライザーをmopidyで使用できるのは本当に素晴らしいことです。
私が知っていることではありません。GStreamer1.xへの移行をブロックするため、GStreamer要素としてこれを実行したくない可能性があります。
これは、出力の適切なサポートを追加する際にもブロックされるIMOです。
Mopidy / ncmpcppにビジュアライザーのサポートを追加しようとしたときに、この問題にも遭遇したことを付け加えてください。 現在作業中でなくても、将来的にはこれを持っていたいです。 また、オープンソースプロジェクトに時間を割いてくださった方々にも心から敬意を表したいと思います。 :笑顔:
理想的には、これはリモートで機能します。 Mopidyの力は、プライベートクラウドに組み込むことができるソリューションであることにあります。
一般に、FIFOはプロセス間通信の移植性の高い方法ではないため、IMOは避ける必要があります。 また、このスレッドですでに述べたように、いくつかの厄介な副作用もあります。 個人的にUDPシンクを使用してパケットをダンプする方が良いと思います。これはより一般的なソリューションであり、Mopidyの外部で(必要に応じて)FIFOに書き込むものに簡単に適合させることができます。 (netcatを使用して)UDPポートからデータを読み取り、FIFOに書き込むためのシェルスクリプトの行。
いいですね。 ncmpcppが入力としてそれを使用することも許可するクライアントが嘘をついている可能性があります。
もう1つのアイデアは、Mopidy側で追加の実装を必要としないため、PulseAudioを直接使用することです。 私が作成したDockerコンテナは、TCPを使用してネットワーク経由でPulseAudioにアクセスします。 ncmpcppは実際にそれを直接使用できます。
私が読んだことから、ビジュアライザーは、FIFOファイルから読み取られたサンプルのブロックに対してFFTを実行しているだけです。 私が指摘しているのは、 mkfifo
を使用してMopidyの外部にFIFOを作成し、次にnetcat
を使用してMopidyからUDPデータを読み取り、出力をnetcat
からにリダイレクトできるということです。 FIFOファイル。 したがって、 ncmpcpp
に関する限り、変更する必要はありません。FIFOファイルを読み取るだけです。
Mopidyで目指していることを達成するために、オーディオ出力プロパティを変更してudpsink GStreamer要素に出力できるため、実装作業は必要ありません。 ALSA / Pulseシンクとudpsinkの両方に出力する「ティー」の一部として配置することをお勧めします。
以下は動作するはずです....テストされていないので、多少の調整が必要になる場合があります。
Mopidyオーディオ構成の場合:
output = tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink port=5555
Linuxホストで、netcatを起動してローカルホストでポート5555のUDPデータをリッスンし、サンプルをFIFOに出力します。
mkfifo /tmp/mopidy.fifo
nc -u -l 127.0.0.1 5555 > /tmp/mopidy.fifo &
mpd.conf内:
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mopidy.fifo"
format "44100:16:2"
}
注:PulseAudio出力を使用している場合は、TCP方向接続モジュールで同様のことを実行できる可能性があります。 ただし、TCP接続の上で実行されるプロトコルをリバースエンジニアリングする必要がある場合があります。たとえば、生のシンクとして扱うことができない場合があります。
共有してくれてありがとう@ liamw9534 。 それを行うのに十分な構成を理解するのに、あるいは私ができることを知るのに、私はしばらく時間がかかりました。 これをDockerコンテナーに追加して、機能するかどうかを確認します。
ただし、FIFOを空にするものがない場合は、問題が発生する可能性があります。 netcatはカーネルバッファをいっぱいにしてから失敗するため。 また、FIFOを開く方法によっては、FIFOが書き込み可能であるためにリーダーの存在を要求する可能性があるため、問題が発生する可能性もあります:/
ただし、FifoStreamerコードを適応させてUDPデータを受け入れ、これを処理することもできます。これは、そこで発生する可能性のあるエラーケースのほとんどをすでに処理していることを願っています。
@adamcik動作するスクリプトがある場合は、それをdocker-ncmpcppの一部としてdocker-mopidyをUDPで
コマンドラインでいくつかの基本的な実験を行いましたが、接続タイムアウト( nc -kluw 1 127.0.0.1 5555 > /tmp/mopidy.fifo
を使用すれば、すべて正常に機能します。 これにより、netcatは、最後の接続が切断された後(1秒のタイムアウト)、常に新しい送信元ポート接続をリッスンします。
上記のコマンドは、FIFOファイルからの読み取りの有無に関係なく機能し、FIFOファイルからの読み取りプロセスが停止してファイルを閉じた場合にも機能します。
@wernightは、このバグの説明を参照してください。これが私が持っているすべてのコードです。
ベルトとブレースの場合は、コマンドをwhileループに固定します(例: while :; do nc -kluw 1 127.0.0.1 5555> /tmp/mopidy.fifo; sleep 1; done
終了した場合は、1秒遅れて再び起動します。
@ liamw9534そこにmpd.confがあります。 私はこれに混乱しています。 mopidy-mpdに加えてスタンドアロンのMPDサーバーを実行していますか?
@lrvickはい、私の間違いです。もちろん、〜/ .ncmpcpp / configに追加する必要のある構成について考えていました。
.config/mopidy/mopidy.conf
...
[audio]
output = tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink port=5555
$ mkfifo /tmp/mopidy.fifo
$ while :; do nc -kluw 1 127.0.0.1 -p 5555> /tmp/mopidy.fifo; sleep 1; done
(ここに-p
追加しました)。
~/.ncmpcpp/config
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mopidy.fifo"
format "44100:16:2"
}
( wernight / docker-mopidyおよびwernight / docker-ncmpcppでも実行されます)
ただし、Mopidyのログにoutput
理解していることが示されていても、5555に接続できないようです。 netstat
は、5555で開いているUDPも表示しません。 output
行を完全には理解していません。 tee
はbashコマンドであり、残りはMopidyのもののように見えます。
しかし、音楽を再生しているときにudp6 [::]:51307
を見つけました。
output
は、Mopidyの一部としてplaybin2
渡されるGstBin
要素として解釈されます。内部では、これは単なるGstreamerパイプラインであり、特別なことは何もありません。 したがって、 tee
は実際にはGstreamer要素です。 シェルコマンドtee
とは何の関係もありません。
したがって、コマンドラインでMopidy内で何が起こっているかを概算して、次のようにすることができます。
gst-launch audiotestsrc ! tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink port=5555 &
これにより、正弦波トーンの再生が開始されます。 次に、次のコマンドを実行します。
nc -kluw 1 127.0.0.1 5555
その後、ディスプレイに多くの奇妙な文字が表示されるようになります。これは、 nc
からstdoutに出力されるテストオーディオストリームです。 これは、基礎となるアプローチが機能することを効果的に証明します。 同じ動作を再現できることを確認できますか?
次に、2番目のステップとしてFIFOを追加して、FIFOをstdoutにcat
て、同じ奇妙な文字を表示できることを確認できます。
また、 ncmpcpp
必要な構成形式を再確認します。 https://wiki.archlinux.org/index.php/Ncmpcpp#Enabling_visualizationを簡単に調べたところ、必要な構成形式が異なることがわかりました
visualizer_fifo_path = "/tmp/mpd.fifo"
visualizer_output_name = "my_fifo"
visualizer_sync_interval = "30"
visualizer_in_stereo = "yes"
visualizer_type = "spectrum" (spectrum/wave)
私はncmpcpp
使用しないので、問題はここにもある可能性があります...
$ apt-get install gstreamer-tools
$ gst-launch audiotestsrc ! tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink port=5555 &
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstPulseSinkClock
$ nc -kluw 1 127.0.0.1 -p 5555
no connection : Connection timed out
( nc ... -p
を使用すると、エラーが発生します)
でもトーンが鳴っているのは聞こえます。
どのディストリビューションを使用していますか? また、 nc -h
すると、出力はどうなりますか?
$ nc -h
OpenBSD netcat (Debian patchlevel 1.89-4ubuntu1)
This is nc from the netcat-openbsd package. An alternative nc is available
in the netcat-traditional package.
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-P proxy_username] [-p source_port]
[-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol]
[-x proxy_address[:port]] [hostname] [port[s]]
Command Summary:
-4 Use IPv4
-6 Use IPv6
-D Enable the debug socket option
-d Detach from stdin
-h This help text
-i secs Delay interval for lines sent, ports scanned
-k Keep inbound sockets open for multiple connects
-l Listen mode, for inbound connects
-n Suppress name/port resolutions
-P proxyuser Username for proxy authentication
-p port Specify local port for remote connects
-q secs quit after EOF on stdin and delay of secs
-r Randomize remote ports
-S Enable the TCP MD5 signature option
-s addr Local source address
-T ToS Set IP Type of Service
-C Send CRLF as line-ending
-t Answer TELNET negotiation
-U Use UNIX domain socket
-u UDP mode
-Z DCCP mode
-v Verbose
-w secs Timeout for connects and final net reads
-X proto Proxy protocol: "4", "5" (SOCKS) or "connect"
-x addr[:port] Specify proxy address and port
-z Zero-I/O mode [used for scanning]
Port numbers can be individual or ranges: lo-hi [inclusive]
Ubuntuで使用しているnc
では、 -p
オプションは必要ありません。 マニュアルページは、 -l
と組み合わせて-p
を指定するとエラーになるはずであることも示しています。
-l Used to specify that nc should listen for an incoming connection
rather than initiate a connection to a remote host. It is an error
to use this option in conjunction with the -p, -s, or -z options.
Additionally, any timeouts specified with the -w option are ignored.
DebianWheezyを使用します。
Dockerのインストールから始まるUbuntuの完全な手順は次のとおりです。
$ wget -qO- https://get.docker.com/ | sh
$ sudo gpasswd -a ${USER} docker
$ docker run --rm -it \
-e PULSE_SERVER=tcp:$(hostname -i):4713 \
-e PULSE_COOKIE_DATA=$(pax11publish -d | grep --color=never -Po '(?<=^Cookie: ).*') \
debian:wheezy
$ apt-get update && apt-get install -y netcat
$ nc -h
[v1.10-40]
connect to somewhere: nc [-options] hostname port[s] [ports] ...
listen for inbound: nc -l -p port [-options] [hostname] [port]
options:
-c shell commands as `-e'; use /bin/sh to exec [dangerous!!]
-e filename program to exec after connect [dangerous!!]
-b allow broadcasts
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h this cruft
-i secs delay interval for lines sent, ports scanned
-k set keepalive option on socket
-l listen mode, for inbound connects
-n numeric-only IP addresses, no DNS
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-q secs quit after EOF on stdin and delay of secs
-s addr local source address
-T tos set Type Of Service
-t answer TELNET negotiation
-u UDP mode
-v verbose [use twice to be more verbose]
-w secs timeout for connects and final net reads
-z zero-I/O mode [used for scanning]
port numbers can be individual or ranges: lo-hi [inclusive];
hyphens in port names must be backslash escaped (e.g. 'ftp\-data').
$ nc -kluw 1 127.0.0.1 5555
UDP listen needs -p arg
$ apt-get install -y net-tools gstreamer-tools gstreamer0.10-plugins-good
$ echo -ne $(echo $PULSE_COOKIE_DATA | sed -e 's/../\\x&/g') >$HOME/pulse.cookie
$ export PULSE_COOKIE=$HOME/pulse.cookie
$ gst-launch audiotestsrc ! tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink port=5555 &
$ nc -kluw 1 127.0.0.1 -p 5555
no connection : Connection timed out
netcat-openbsd
パッケージで試してみました。
$ nc -h
OpenBSD netcat (Debian patchlevel 1.105-7)
...
これで、 nc
は、トーンが再生されている間は何も表示されません(これはやや良いようです)。
$ nc -kluw 1 127.0.0.1 5555
(nothing here)
OK、2つのターミナルを開き、最初のターミナルで実行します。
nc -kluw 1 127.0.0.1 5555
次に、2番目のターミナルで次のコマンドを実行します。
nc -u 127.0.0.1 5555
2番目の端末のstdinにいくつかの文字を入力し、Enterキーを押します。 stdoutの最初の端末に同じ文字が表示されますか?
はい、動作します。 Dockers間で動作するようになりました:
$ docker run --rm --name nc1 -it my-debian-with-nc nc -kluw 1 0.0.0.0 5555
Hello
$ docker run --rm --link nc1:nc1 -it my-debian-with-nc nc -u nc1 5555
Hello
したがって、これはnc
がgst-launch
何も表示しない理由を説明していません。 ただし、コンテナ間で機能するにhost=SOMETHING
、
あはは! host=0.0.0.0
を設定すると、機能します。
ネットワーク経由でデータを送信する必要がありますか? ローカルマシン上のパケットのみが必要であると想定していました。 udpsink host=0.0.0.0 port=5555
すると、ネットワーク上のあらゆる場所にパケットがブロードキャストされます。 おそらくあなたが望むものではありません...
パケットをローカルループバックに制限する代わりに、 host=127.0.0.1
と言うことができるはずです。
したがって、実際の問題はデフォルトのルーティング構成にあると思います。 デフォルトでは、システムでは、発信パケットは別のインターフェイスに送られます。 gstreamer要素のバージョンが異なるか、IPルーティング設定が異なる可能性があります。
コンテナからは、0.0.0.0または場合によってはマシンのIPを使用する必要がありました。 単一のマシン/コンテナでもデフォルト設定が機能していませんでした。
しかし、はい、今はネットワークを使用する必要があります。ncmpcppとmopidyを別々のDockerコンテナーに保持することをお勧めします。つまり、これらは異なるネットワーク上にあります。 これは安全性や隔離などには本当に良いのですが、少し問題が発生します。
ncmpcppクライアントはMPDサーバーに接続して音楽ストリーミングを要求します。その後、ncmpcppのIPが認識され、UDPパケットがそのIPにブロードキャストされます。 ただし、現在、IPはMopidy構成でハードコーディングされています。
現在、解決策はありません。 私は解決策を考えています:
--net=container:NAME_or_ID
を介してホストを共有するように指示します。これにより、ユーザーが入力する別のパラメーターが追加されますが、これにより大幅に簡素化されます。この循環依存の解決策があります。 それでも恐ろしいハックのように感じますが、最終的にはユーザーが使用するのに十分簡単なはずです。 特に私がエイリアンだったnc
コマンドを手伝ってくれたliamw9534に感謝します。
There is no output named "my_fifo"!
を除いて、FIFOは機能しています。 名前はmdp.conf
の名前と一致する必要があるようです:
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mpd.fifo"
format "44100:16:2"
}
このオーディオ出力をMopidyに追加する方法を知っている場合は、FIFOファイルを共有しようとすることがあります。 吐き気(単純なビジュアライザー-ony)にも同じ要件があるようです。
「異なるネットワーク上で」とはどういう意味かわかりません。 ローカルマシンへのオーディオトラフィックを分離する場合は、 udpsink
127.0.0.1
を使用する必要があります。 0.0.0.0
を選択すると、デフォルトルートを使用してパケットが転送されます。これは、ネットワーク経由でUDPパケットを送信することを意味する可能性があります。一般に、ネットワークトラフィックが消費するため、これは悪い考えです。多くの帯域幅、つまり2 x 16 x 44100 = 1.41Mbps。
理論的には、 udpsink
が使用するネットワークインターフェイスに関係なく、 nc
を0.0.0.0
構成できるはずです。 これは、すべてのネットワークインターフェイスでリッスンします。 異なるネットワークインターフェイス上の他のサービスに同じIPポート番号を使用しない限り、これで問題ありません。
私は最後の提案を使用して、両方を同じネットワークに配置しました。 これらのネットワークはとにかくローカルであり、それは単なる論理的な分離です。 これはFIFOを構築するために機能しますが、ncmpcppはそれを必要としません(上記の2の前の応答を参照)。
そのチャンネル名について何か考えはありますか? または、 mpd.conf
ようなFIFOへの別の方法がある場合はどうなりますか? なしではまったく機能しないようです。
mpd.conf
はMPDデーモンの設定にのみ使用されていると思いました。 この場合、mopidyはMPDデーモンであり、DockerがFIFOファイルを作成しているため、これは冗長である必要があります。 その場合、必要なのは.ncmpcpp/config
がクライアントと一致していることを確認することだけですよね?
すこし。 正確に何をしているのかわかりません。 ただし、ご覧のとおり、 visualizer_output_name = "my_fifo"
はaudio_output { name "my_fifo" }
一致する必要があります。 現在、ncmpcppはThere is no output named "my_fifo"
ます。 visualizer_output_name
説明は、上記の5つの投稿です。 同期するために、実際には何らかの方法で出力に直接接続しているように見えます。
私はこれを使用していませんが、 visualizer_output_name
はMPD(プログラムではなくプロトコル)出力の1つ(つまり、 mpc outputs
何か)と一致する必要があるように見えます。 Mopidyは現在、構成可能な出力を許可しておらず、MPD出力は「ミュート」の1つだけです。
可能であれば、 visualizer_output_name
設定を解除することをお勧めします。
設定しないでみました。 まだビジュアライザーは表示されません。 udpsink
の出力形式について疑問に思います:ビジュアライザーが機能するには44100:16:2
である必要があります( ncmpcpp
またはnausea
)。
念のためにMute
試してみましたが、非常に面白い体験ができました。エラーは表示されず、ビジュアライザーも表示されずに、サウンドがミュートされました。 または、より正確には、 Mute
出力を無効にしました。
ビジュアライザーのFFT機能はどこで実行されるのでしょうか。
FIFOの出力で実行されますか、それともFIFOへの入力で実行されますか? 君
MPDクライアントコードをチェックして、FIFOデータをどのように処理するかを確認する必要があります。
通常は巨大なファイルを作成する場合でも、テストのためだけにどちらかをサポートする方法はありますか?
どちらもサポートする必要はありません。 FFTがどこにあるかを知る必要があります
行われることになってから、正しいアプローチを選択します。 FFTが
ビジュアライザーで行われると、それは努力の完全な無駄になります
もう一度実装してください。
15時09分に2015年5月13日、ヴェルナーBerouxの[email protected]は書きました:
たとえそれがあったとしても、テストのためだけに、どちらかをサポートする方法はありますか?
通常、巨大なファイルを作成します。—
このメールに直接返信するか、GitHubで表示してください
https://github.com/mopidy/mopidy/issues/775#issuecomment-101676033 。
FFTはビジュアライザーによって実行され、そのためにはFIFO内の特定のオーディオ形式が必要です。 参照: http :
良い-それならそれが機能しない理由はありません! あなたはしましたか
標準のMPDデーモンを実行しているシステムと
ローカルncmpcppクライアント? 両方でFIFOファイル名の名前を変更するとどうなりますか
構成ファイル? それでも機能しますか? かどうかを確認しようとしています
ハードコードされたパスがどこかに存在します...
午後03時57分に2015年5月13日、ヴェルナーBerouxの[email protected]は書きました:
FFTはビジュアライザーによって実行され、特定のオーディオ形式が必要です
そのために動作するFIFOで。 参照: http :—
このメールに直接返信するか、GitHubで表示してください
https://github.com/mopidy/mopidy/issues/775#issuecomment-101702624 。
私のコメントはncmpcppソースに基づいてい
Mopidyのミュート出力はデフォルトで無効になっています。つまり、オーディオはミュートされていません。 ncmpcppビジュアライザーは、指定された出力を取得し、無効にして(効果なし)、有効にして、オーディオをミュートします。 おそらく彼らはそれを2回切り替える必要があります。
オーディオの形式が間違っている可能性があります。 上記のコードで@adamcikが持っていたのとは異なり、gstreamerパイプラインには正しいことを確認するものが何もありません。
フォーマットがどのように問題になるかわかりにくい.... 16ビット署名
整数。 起こりうる最悪の事態は、L / Rチャネルを交換することですか?
2015年5月13日16:33、NickSteelの[email protected]は次のように書いています。
私のコメントはncmpcppソースに基づいていました
http://git.musicpd.org/cgit/mirror/ncmpcpp.git/tree/src/visualizer.cpp。Mopidyのミュート出力はデフォルトで無効になっています。つまり、オーディオはミュートされていません。
ncmpcppビジュアライザーは、指定された出力を取得し、無効にします(
効果)そしてそれを有効にして、オーディオをミュートします。 間違いなく彼らはすべきです
2回切り替えるだけです。オーディオの形式が間違っている可能性があります。 あなたが持っている
@adamcikとは異なり、gstreamerパイプラインには正しいことを確認するものは何もありません
https://github.com/adamcikは上記の彼のコードにありました。—
このメールに直接返信するか、GitHubで表示してください
https://github.com/mopidy/mopidy/issues/775#issuecomment-101716947 。
また、バイトの順序が間違っていたとしても、FFTを期待するだけかもしれません。
間違った周波数応答を生成するための出力......しかし、あなたはまだ見るでしょう
なにか。
2015年5月13日16:37、Liam [email protected]は次のように書いています。
フォーマットがどのように問題になるかわかりにくい.... 16ビット署名
整数。 起こりうる最悪の事態は、L / Rチャネルを交換することですか?2015年5月13日16:33、NickSteelの[email protected]は次のように書いています。
私のコメントはncmpcppソースに基づいていました
http://git.musicpd.org/cgit/mirror/ncmpcpp.git/tree/src/visualizer.cpp。Mopidyのミュート出力はデフォルトで無効になっています。つまり、オーディオはミュートされていません。
ncmpcppビジュアライザーは、指定された出力を取得し、無効にします(
効果)そしてそれを有効にして、オーディオをミュートします。 間違いなく彼らはすべきです
2回切り替えるだけです。オーディオの形式が間違っている可能性があります。 あなたが持っている
gstreamerパイプラインには、これとは異なり、正しいことを確認するものは何もありません。
@adamcikhttps ://github.com/adamcikは上記のコードに含まれていました。—
このメールに直接返信するか、GitHubで表示してください
https://github.com/mopidy/mopidy/issues/775#issuecomment-101716947 。
そうですね、おそらくそれは、Mopidyのミュート出力を有効のままにしておくと、udpsinkがデータを送信しないことを意味するためです。
cat /tmp/mdp.fifo
(上記のようにUDPから作成)は、データの一定のストリームを正しく表示します。
ビジュアライザーのncmpcppコードを見ました:
(Dockerをインストールした後)誰でも私のブランチから試すことができます:
git clone https://github.com/wernight/docker-mopidy.git
cd docker-mopidy
git checkout udpsink
docker build -t mopidy .
cd ..
git clone https://github.com/wernight/docker-ncmpcpp.git
cd docker-ncmpcpp
git checkout udpsink
docker build -t ncmpcpp .
cd ..
# Remember to enable PulseAudio over network
docker run --name mopidy -d \
-e PULSE_SERVER=tcp:$(hostname -i):4713 \
-e PULSE_COOKIE_DATA=$(pax11publish -d | grep --color=never -Po '(?<=^Cookie: ).*') \
mopidy
docker run --rm -it --link mopidy:mopidy ncmpcpp --host mopidy
-kが機能しなかったため、netcatのラングリングにかなりの時間を費やす必要がありましたが、曲のスイッチで自動再起動するために思いついたのは次のとおりです。
while :; do yes $'\n' | nc -lu 127.0.0.1 5555 > /tmp/mopidy.fifo; done
基本的に上記の他のオプション。
@ S0lll0s @wernight netcat -kも私には機能せず、曲の変更後に再起動する必要がありました。 あなたの解決策は機能しますが、私はsocatがよりうまく機能することを発見しました:
while :; do socat -d -d -T 1 -u UDP4-LISTEN:5555 OPEN:/tmp/mopidy.fifo; done
Arch Linuxユーザーの場合:
-k
サポート付きのnc
を取得するには、 openbsd-netcat
パッケージをインストールする必要がありますが、それも機能しなかったため、 @ SjRNMzUのスクリプトを使用してみてください。それを実行するためのsocat
パッケージ。
@johnhamelink (コメントからArchを実行していると思います) socat
ソリューションを使用して曲を一時停止した後、ビジュアライザーが「追いつく」ことに問題がありましたか?
@ theos-space自分で気づいたとは言えません
Archを使用していますが、 nc
( gnu
とopenbsd
両方)またはsocat
いずれかで動作させることができませんgst-launch-1.0 ... udpsink port=5555
からnc -kluw 1 127.0.0.1 5555
で読み取ることができません。これは、画面に何も出力されないためです。
これがdebianバスター(4.11.6-1)、mopidy 2.1.0-1、gstreamer1.0-tools 1.12.2-1、ncmpcpp 0.7.4-1 + b3、socat1.7.3.2-1で機能することを確認できます。
システムの起動時にsocatを起動します。
open_mpd_fifo() {
local fifo
readonly fifo='/tmp/mpd.fifo'
mkfifo "$fifo"
while :; do socat -d -d -T 1 -u UDP4-LISTEN:5555 OPEN:"$fifo"; done
}
mopidy [audio] conf(udpsinkに対してホストを定義する必要があることに注意してください):
[audio]
output = tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink host=127.0.0.1 port=5555
Archのranisaltは、fifoサポートを使用してncmpcppをコンパイルする必要があります。https://bbs.archlinux.org/viewtopic.php?id = 99915を確認してください。
残りのスレッド+ドキュメント+マンページ+さまざまなブログを読んだ後の、私の作業中のArchセットアップは次のとおりです。 Mopidyをシステムサービスとして実行し、TCP経由でユーザーサービスPulseAudioにオーディオを送信しています。 経験の浅い人に役立つと思われる追加の注釈をいくつか含めました。
これらはすべて、公式のArchリポジトリからのものです。
gstreamer 1.12.3-1
mopidy 2.1.0
ncmpcpp 0.8.1 # this had fifo support without any special compiling for me
openbsd-netcat 1.178_3-1 # gnu-netcat lacks the -k flag, as discussed above
pulseaudio 11.1
mopidyシステムサービスを有効にします。
sudo systemctl enable mopidy.service
編集を容易にするために、mopidyのシステム構成をユーザー構成へのシンボリックリンクに置き換えます(オプション)。
sudo ln -sf ~/.config/mopidy/mopidy.conf /etc/mopidy/mopidy.conf
fifoファイルを作成します。
mkfifo "/tmp/mpd.fifo"
~/.config/mopidy/mopidy.conf
(またはシンボリックリンクを作成しなかった場合は/etc/mopidy/mopidy.conf
):ローカルホストでリッスンしているpulseaudioサーバーとローカルホストのUDPシンクにオーディオを送信するようにmopidyに指示します:5555
[audio]
output = tee name=t ! queue ! pulsesink server=127.0.0.1 t. ! queue ! udpsink host=127.0.0.1 port=5555
~/.ncmpcpp/config
:リッスンする必要のあるfifoファイルの場所やその他の設定をncmpcppに指示します
visualizer_fifo_path = "/tmp/mpd.fifo"
visualizer_output_name = "my_fifo"
visualizer_sync_interval = "30"
visualizer_in_stereo = "yes"
visualizer_type = "spectrum"
visualizer_look = "+|"
in ~/.config/pulse/default.pa
:ローカルホストからTCP経由でオーディオを受け入れるようにpulseaudioに指示します(設定はすでにそこにあり、コメントを外すことができます)
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
in ~/.zshrc
( ~/.bashrc
でも機能するはずです): ncmpcpp
netcat
開始と停止を処理するラッパー関数 "nplayer"を作成します:
nplayer () (nc -kluw 1 127.0.0.1 5555 > /tmp/mpd.fifo & trap "kill $!" EXIT; ncmpcpp)
これは何をしますか:
netcat
プロセスを開始して、UDPシンクに送信されたオーディオデータをリッスンし、前に作成したFIFOにリダイレクトします。 フラグ:-k
は、現在の接続が完了した後もリッスンし続けます-l
リスニングモードを有効にする-u
UDPモードを有効にする-w NUM
NUM秒(この場合は1秒)後にアイドル接続をタイムアウトしますnetcat
プロセスをncmpcpp
プロセスの終了をして終了する機能のサブシェルを引き起こしncmpcpp
プロセスを開始しますManjaro(arch distro)でmopidyを実行しています。 socatまたはnetcatを介して出力を取得するのに問題がありました。 しかし、tcpdumpで入ってくるパケットを観察することができました:
sudo tcpdump -i lo -n udp port 5555 -XX
長い時間がかかり、 @ mosbasikがなけれでした。
問題は、udpsinkの後にhost=127.0.0.1
がないこと
[audio]
output = tee name=t ! queue ! autoaudiosink server=127.0.0.1 t. ! queue ! udpsink host=127.0.0.1 port=5555↪
また
[audio]
output = tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink host=127.0.0.1 port=5555↪
ちなみに、 pulsesink
を機能させることができなかったので、 autoaudiosink
ままにしておく必要がありました。これは、以前にも設定したものです。 ただし、ビジュアライザーは何らかの理由で本当に遅いようです。それが、再起動後は完全に機能します。 pulselinkを使用すると、gstreamerプラグインについて不平を言い続けました。 公式のArchリポジトリにgstのすべてのプラグインパッケージをインストールした後でも(私は推測します)。 autoaudiosink
せいであるかどうかはわかりませんがflump3dec
とmad
注意してください
mopidy deps
出力
Executable: /usr/bin/mopidy
Platform: Linux-4.16.7-1-MANJARO-x86_64-with-glibc2.2.5
Python: CPython 2.7.15 from /usr/lib/python2.7
Mopidy: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Mopidy-Iris: 3.4.9 from /usr/lib/python2.7/site-packages
setuptools>=3.3: 40.5.0 from /usr/lib/python2.7/site-packages
pylast>=1.6.0: 2.3.0 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
Mopidy>=2.0: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Mopidy-Local-Images>=1.0: 1.0.0 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
Mopidy>=1.1: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
uritools>=1.0: 1.0.1 from /usr/lib/python2.7/site-packages
ipaddress>=1.0.6: 1.0.22 from /usr/lib/python2.7/site-packages
ipaddress>=1.0.6: 1.0.22 from /usr/lib/python2.7/site-packages
ConfigObj>=5.0.6: 5.0.6 from /usr/lib/python2.7/site-packages
raven>=6.1.0: 6.9.0 from /usr/lib/python2.7/site-packages
contextlib2: 0.5.5 from /usr/lib/python2.7/site-packages
Mopidy-Local-Images: 1.0.0 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
Mopidy>=1.1: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
uritools>=1.0: 1.0.1 from /usr/lib/python2.7/site-packages
ipaddress>=1.0.6: 1.0.22 from /usr/lib/python2.7/site-packages
ipaddress>=1.0.6: 1.0.22 from /usr/lib/python2.7/site-packages
Mopidy-Spotify-Tunigo: 1.0.0 from /usr/lib/python2.7/site-packages
Mopidy>=0.19.0: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Mopidy-Spotify>=1.2.0: 3.1.0 from /usr/lib/python2.7/site-packages
Mopidy>=2.0: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
pyspotify>=2.0.5: 2.0.5 from /usr/lib/python2.7/site-packages
cffi>=1.0.0: 1.11.5 from /usr/lib/python2.7/site-packages
pycparser: 2.19 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tunigo>=1.0.0: 1.0.0 from /usr/lib/python2.7/site-packages
requests>=2.0.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
Mopidy-SoundCloud: 2.1.0 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
Mopidy>=1.0: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
Mopidy-Spotify: 3.1.0 from /usr/lib/python2.7/site-packages
Mopidy>=2.0: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
pyspotify>=2.0.5: 2.0.5 from /usr/lib/python2.7/site-packages
cffi>=1.0.0: 1.11.5 from /usr/lib/python2.7/site-packages
pycparser: 2.19 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
GStreamer: 1.14.4.0 from /usr/lib/python2.7/site-packages/gi
Detailed information:
Python wrapper: python-gi 3.30.2
Relevant elements:
Found:
uridecodebin
souphttpsrc
appsrc
alsasink
osssink
oss4sink
pulsesink
id3demux
id3v2mux
lamemp3enc
mpegaudioparse
mpg123audiodec
vorbisdec
vorbisenc
vorbisparse
oggdemux
oggmux
oggparse
flacdec
flacparse
shout2send
Not found:
flump3dec
mad
udpsinkをMopidyおよびすべてのリモートncmpcppクライアントで動作させようとすると問題が発生します。 Mopidyは、Docker環境でMacVLANを使用してセットアップされます。 コンテナのポートが正常に表示されます。
nc -vz -u mopidy.lan 5555
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif (null)
src x.x.x.x port 50630
dst x.x.x.x port 5555
rank info not available
Connection to mopidy.lan port 5555 [udp/personal-agent] succeeded!
現在、Mopidyは次の設定ビットを使用しています。
[audio]
mixer = software
mixer_volume = 100
output = tee name=t ! queue ! lamemp3enc ! shout2send async=false mount=mopidy ip="mopidy.lan" port=8092 username="some username" password="some password" t. ! queue ! udpsink host=0.0.0.0 port=5555
netcatを使用して生データをmpd.fifoに正常に取り込む方法について何か考えはありますか? 私はnetcatを間違った方法で使用しているため、以下を使用しても機能しないと思います。 いくつかの研究は答えを提供していません、それでうまくいけば誰かが私を正しい方向に向けることができます。
#!/bin/bash
mkfifo /tmp/mpd.fifo
while :; do yes $'\n' | nc -lu mopidy 5555 > /tmp/mpd.fifo; done
次のエラーが発生します。
nc: Can't assign requested address
これを機能させる方法について何か考えはありますか?
乾杯!
参考までに、gstreamerのudpsink
のサポートをncmpcppに追加したので、fifoハックなしで直接使用できるようになりました。
詳細については、 https://github.com/ncmpcpp/ncmpcpp/commit/fb886f687014e22b2fe1477da855be5201063ea8を参照してください。
ティーザーの下。 これは、mopidy + mopidy-spotify + mopidy-mpd + ncmpcppです。
https://user-images.githubusercontent.com/387658/102549720-e41bf980-40bc-11eb-8127-70889011e52f.mp4
@arybczak素晴らしい! これをhttps://discourse.mopidy.com/c/show-and-tell/9に投稿する必要があり
@adamcikこれは、このほぼ7
@pspeder 、正確にはどういう意味ですか? https://github.com/mopidy/mopidy/issues/775#issuecomment -747725806の使用に問題があり
@kingosticksは単にこの問題を解決することを提案していました🙂
私はそれに同意します。
最も参考になるコメント
参考までに、gstreamerの
udpsink
のサポートをncmpcppに追加したので、fifoハックなしで直接使用できるようになりました。詳細については、 https://github.com/ncmpcpp/ncmpcpp/commit/fb886f687014e22b2fe1477da855be5201063ea8を参照してください。
ティーザーの下。 これは、mopidy + mopidy-spotify + mopidy-mpd + ncmpcppです。
https://user-images.githubusercontent.com/387658/102549720-e41bf980-40bc-11eb-8127-70889011e52f.mp4