だから私は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ではpv
。arecord
netcat
pv
pv -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=…
すぎる場合は、コマンドが完了するまで数秒待つ必要があります。