fix: audio rtp timestamp

This commit is contained in:
Qishuai Liu 2025-05-16 23:11:22 +09:00
parent cc83e4193f
commit 9d12dd1e54
No known key found for this signature in database
1 changed files with 17 additions and 3 deletions

View File

@ -12,6 +12,7 @@ import (
"time" "time"
"github.com/jetkvm/kvm/resource" "github.com/jetkvm/kvm/resource"
"github.com/pion/rtp"
"github.com/pion/webrtc/v4/pkg/media" "github.com/pion/webrtc/v4/pkg/media"
) )
@ -243,6 +244,8 @@ func handleAudioClient(conn net.Conn) {
scopedLogger.Info().Msg("native audio socket client connected") scopedLogger.Info().Msg("native audio socket client connected")
inboundPacket := make([]byte, maxAudioFrameSize) inboundPacket := make([]byte, maxAudioFrameSize)
var timestamp uint32
var packet rtp.Packet
for { for {
n, err := conn.Read(inboundPacket) n, err := conn.Read(inboundPacket)
if err != nil { if err != nil {
@ -250,10 +253,21 @@ func handleAudioClient(conn net.Conn) {
return return
} }
logger.Info().Msgf("audio socket msg: %d", n)
if currentSession != nil { if currentSession != nil {
if _, err := currentSession.AudioTrack.Write(inboundPacket[:n]); err != nil { if err := packet.Unmarshal(inboundPacket[:n]); err != nil {
scopedLogger.Warn().Err(err).Msg("error unmarshalling audio socket packet")
continue
}
timestamp += 960
packet.Header.Timestamp = timestamp
buf, err := packet.Marshal()
if err != nil {
scopedLogger.Warn().Err(err).Msg("error marshalling packet")
continue
}
if _, err := currentSession.AudioTrack.Write(buf); err != nil {
scopedLogger.Warn().Err(err).Msg("error writing sample") scopedLogger.Warn().Err(err).Msg("error writing sample")
} }
} }