0
私は基本的にwebrtcストリームからオーディオチャンクを録音しようとしていますが、このリソースの助けを借りてバイナリデータを送ることができましたHTML Audio Capture streaming to Node.js。WebRTC byte []ストリームの処理?
Im netty-socketioを使用しています。このライブラリはクライアント側でsocket-ioとよく動作します。
class ByteArrayList {
private List<Byte> bytesList;
public ByteArrayList() {
bytesList = new ArrayList<Byte>();
}
public void add(byte[] bytes) {
add(bytes, 0, bytes.length);
}
public void add(byte[] bytes, int offset, int length) {
for (int i = offset; i < (offset + length); i++) {
bytesList.add(bytes[i]);
}
}
public int size(){
return bytesList.size();
}
public byte[] getArray() {
byte[] bytes = new byte[bytesList.size()];
for (int i = 0; i < bytesList.size(); i++) {
bytes[i] = bytesList.get(i);
}
return bytes;
}
}
バイト配列を収集するために、このクラスを使用して
public static AudioFormat getAudioFormat() {
float sampleRate = 48000;
int sampleSizeInBits = 8;
int channels = 2;
boolean signed = true;
boolean bigEndian = true;
AudioFormat format = new AudioFormat(sampleRate, sampleSizeInBits,
channels, signed, bigEndian);
return format;
}
イム(とはい私は、このソリューションでリスクを知っている):
server.addEventListener("audio-blob", byte[].class, (socketIOClient, bytes, ackRequest) -> {
byteArrayList.add(bytes);
});
server.addEventListener("audio-blob-end", Object.class, (socket, string, ackRequest) -> {
ByteArrayInputStream in = new ByteArrayInputStream(byteArrayList.getArray());
AudioInputStream audiIn = new AudioInputStream(in, getAudioFormat(), 48000l);
AudioFileFormat.Type fileType = AudioFileFormat.Type.WAVE;
File wavFile = new File("RecordAudio.wav");
AudioSystem.write(audiIn,fileType,wavFile);
});
書式設定: ここに私のサーバーのエンドポイントです
生成されたWAVファイルはノイズを再生しますが、録音はありません。私は間違って何をしていますか?
このソリューションに設定されているかどうかわかりませんが、WebRTC Media Server(Kurentoなど)を使用してWebRTC stの記録を処理することを強くお勧めします。連彼らはノードバインディングlibを持っています。 STUN/TURNにTwilioを使用すると、クライアント/サーバー間の接続がネットワークに関係なく常にルーティング可能であることを確認できます。 – Vinay
私はこのプロジェクトを開始する前にKurentoを見て、Websocket/webRTCプロジェクトのための素敵なフレームワークのように思えます。私がKurentoを使用していない共振は、この概念証明がWebsocketとwebrtcの通信を理解するのに役立つということです。 –
私は見る!よく幸運の人。低レベルのWRTC通信を理解するためには、DTLS-SRTPを介して基本ストリームに到達する方法を理解する必要があると思います。 DTLSは、基になるSRTPストリームを暗号化するキーの管理プロトコルです。私はスタックの低さについてはあまり知らないが、JanusはCで書かれていることを知るには良い場所かもしれない:https://github.com/meetecho/janus-gateway – Vinay