netcatを「ストリーム」にする

netcatを「ストリーム」にする

だから私はnetcat音声通話を設定できる簡単な実験をしています。これが私が使用するコマンドです。

仕える人: arecord | netcat -l 10000 | aplay

顧客: arecord | netcat localhost 10000 | aplay

私の問題は、クライアントが接続する数秒前にサーバーが起動したときにサーバーで音声が遅れることです。この遅延を取り除く方法を知りたいです。でいくつかの値を設定することができますnetcatが、どの値を設定するのかわかりません。

私はUDPとTCPを使用しました。 2つの間に違いはありません。

ベストアンサー1

シェルが出力を配信するarecord前に(つまり、クライアントが接続されたときに)出力をバッファリングしているようです。netcat確認するには、以下を試してください。

arecord | pv | netcat -l 10000 | aplay

私のUbuntuではpvarecordnetcatpvpv -B

stdbuf私はand unbuffer(後者はexpect-dev私のUbuntuパッケージにあります)を使ってみましたが、結果は満足できませんでした。

dd以下を使用して十分なデータを更新したとき、かなりの進歩がありました。クライアントから:

arecord | netcat localhost 10000 | { dd bs=100K count=1 iflag=fullblock of=/dev/null; aplay; }

私にとっては十分です100K。お客様のマイルは異なる場合があります。コマンドが速すぎるdd(サーバー側のバッファがいっぱいになる前)、またはパラメータが大きbs=…すぎる場合は、コマンドが完了するまで数秒待つ必要があります。

おすすめ記事