This commit is contained in:
loliball 2024-08-31 14:49:52 +08:00
parent 01573626a2
commit b0d87c0d13

View File

@ -8,28 +8,16 @@ import java.io.ObjectOutputStream
import java.io.Serializable
import java.net.InetSocketAddress
import java.net.Socket
import javax.sound.sampled.AudioFormat
import javax.sound.sampled.AudioSystem
import kotlin.system.measureTimeMillis
val SERVER_PORT = 7890
val SERVER_PORT = 7860
val ECHO_CANCELLATION = true
val PACKET_SAMPLES = 2880
val SAMPLE_RATE = 48000
val CHANNELS = 1
val BUFFER_SIZE = PACKET_SAMPLES * CHANNELS
val bufferOut = ByteArray(BUFFER_SIZE * 2)
val bufferIn = ByteArray(BUFFER_SIZE * 2)
val format = AudioConvert.getAudioFormat(SAMPLE_RATE, CHANNELS)
val decoder = OpusDecoder(SAMPLE_RATE, CHANNELS)
val encoder = OpusEncoder(SAMPLE_RATE, CHANNELS, OpusApplication.OPUS_APPLICATION_AUDIO).also {
it.bitrate = 96000
it.forceMode = OpusMode.MODE_CELT_ONLY
it.signalType = OpusSignal.OPUS_SIGNAL_MUSIC
it.complexity = 0
}
val AUDIO_FORMAT = AudioConvert.getAudioFormat(SAMPLE_RATE, CHANNELS)
object Client {
@JvmStatic
@ -47,22 +35,32 @@ fun mainClient() = runBlocking {
val socket = Socket()
val t = measureTimeMillis {
// socket.connect(InetSocketAddress("zedo.top", SERVER_PORT))
socket.connect(InetSocketAddress("127.0.0.1", SERVER_PORT))
socket.connect(InetSocketAddress("zedo.top", SERVER_PORT))
// socket.connect(InetSocketAddress("127.0.0.1", SERVER_PORT))
}
println("connect time $t")
val out = ObjectOutputStream(socket.getOutputStream())
val inp = ObjectInputStream(socket.getInputStream())
val targetDataLine = AudioSystem.getTargetDataLine(format)
targetDataLine.open(format, bufferIn.size)
val bufferOut = ByteArray(BUFFER_SIZE * 2)
val targetDataLine = AudioSystem.getTargetDataLine(AUDIO_FORMAT)
targetDataLine.open(AUDIO_FORMAT, bufferOut.size)
targetDataLine.start()
val sourceDataLine = AudioSystem.getSourceDataLine(format)
sourceDataLine.open(format, bufferIn.size)
val bufferIn = ByteArray(BUFFER_SIZE * 2)
val sourceDataLine = AudioSystem.getSourceDataLine(AUDIO_FORMAT)
sourceDataLine.open(AUDIO_FORMAT, bufferIn.size)
sourceDataLine.start()
val decoder = OpusDecoder(SAMPLE_RATE, CHANNELS)
val encoder = OpusEncoder(SAMPLE_RATE, CHANNELS, OpusApplication.OPUS_APPLICATION_AUDIO).also {
it.bitrate = 96000
it.forceMode = OpusMode.MODE_CELT_ONLY
it.signalType = OpusSignal.OPUS_SIGNAL_MUSIC
it.complexity = 0
}
launch(Dispatchers.IO) {
while (true) {
targetDataLine.read(bufferOut, 0, bufferOut.size)