2017-07-10 16 views
0

私は、ローカルサーバー上でオーディオをストリームする方法を見つけようとしている初心者です。ロボットのマイクからいくつかのバイナリデータを作成するPythonスクリプトがあります。作成したローカルGoサーバにこのデータを表示したいのです。PythonスクリプトからGoサーバにオーディオバッファを転送しますか?

私は、Webソケットが解決策になる可能性があると読んでいます。 しかし、Pythonスクリプトからオーディオバッファをアップロードする最も簡単な方法は何ですか?そして、この生のバイナリデータをWebアプリケーションからストリーミングできるように、どのように取得するのですか?

多くの多くのありがとうございます。

答えて

0

"ベスト"という方法はありません。プロトコルがオープンインターネット上のポート80/443を経由しなければならない場合は、Webソケットを使用できます。また、Pythonからサーバーにbase64エンコードされたデータのチャンクをPOSTすることもできます。

ロボットとサーバーが同じネットワーク上にある場合は、ロボットからサーバーにUDPパケットを送信できます。 (通常、欠落しているパケットまたはオーディオ上の2つは問題ありません)。 WebベースのGoサーバを持っていても、goルーチンを起動して、着信パケットをUDPで待機することができます。

もっと具体的な場合は、おそらく私または他の誰かがより良い答えを与えることができますか?

+0

ああ、ロボットとサーバーは同じネットワーク上にあります。私のGoスクリプトは次のとおりです。[link](https://play.golang.org/p/l_1E-TYSbB)と私のpythonスクリプトは基本的にこれに対する答えですQ [リンク](https://stackoverflow.com/questions/24243757/nao-robot-remote-audio-problems)。だから私はバイナリデータ(.rawとして保存されている)から私のPythonスクリプトでUDPパケットを作り、Goスクリプトでそれらを聞く必要があると言っている。データをHEXに変換しますか?このデータをWAVやその他の再生可能な音楽形式に変換するにはどうしたらいいですか?ありがとう。 – stucklen

+0

通常、オーディオは8ビットのPCMです。 Numpyは、データを各チャンネルの1つの列で数値(0から255までの数値)に変換するように見えます。一度にbase64の1000バイトを使えるはずです(イーサネットはデフォルトで1500バイトなのでなぜ1000?)。これをbase64としてエンコードします。これは約1300バイトにする必要があります。 UDPパケットとしてGoサーバに送信し、https://github.com/cryptix/wavのようにWAVファイルとして再エンコードします。うまくいけば、そのWAVファイルをミキサーまたはオーディオデバイスに書き込むことができます。しかし、私は最後の部分を試みたことはありません。 – ipaul

+0

ありがとうございますが、まだ難しかったです。私のPythonコードのprocessRemoteメソッドです。(リンク:https://trinket.io/python/ca15d63ae6)私はUDP上でテストデータ(PACKETDATA)を送信し、 。しかし、私のスキルレベルは初心者であり、正確に何を送る必要があるのか​​は分かりません。私はaSoundDataと呼ばれる変数をオーディオにすることができますが、それを印刷すると255を超える数値が表示されるので、どのような種類のデータがあり、どのように16進数に変換しますか?これは次のようになります:[[408 -283 -962 ...、1546 1784 1946](このような3行があります) – stucklen

関連する問題