Fixed bug on H264 when packets are limited

This commit is contained in:
giongto35 2019-09-07 19:03:12 +08:00
parent e4434c61d6
commit f5ba4912b2
5 changed files with 11 additions and 5 deletions

View file

@ -4,6 +4,7 @@ import (
"bytes"
"image"
"log"
"runtime/debug"
"github.com/gen2brain/x264-go"
"github.com/giongto35/cloud-game/encoder"
@ -76,6 +77,7 @@ func (v *H264Encoder) startLooping() {
defer func() {
if r := recover(); r != nil {
log.Println("Warn: Recovered panic in encoding ", r)
log.Println(debug.Stack())
}
if v.Done == true {
@ -92,7 +94,10 @@ func (v *H264Encoder) startLooping() {
return
}
v.enc.Encode(img)
err := v.enc.Encode(img)
if err != nil {
log.Println("err encoding ", img, " using h264")
}
v.Output <- v.buf.Bytes()
v.buf.Reset()
}

View file

@ -127,8 +127,6 @@ function sendKeyState() {
});
var data = parseInt(bits, 2);
console.log(`Key state string: ${bits} ==> ${data}`);
var arrBuf = new Uint8Array(2);
arrBuf[0] = data & ((1 << 8) - 1);
arrBuf[1] = data >> 8;

2
static/js/ws.js vendored
View file

@ -187,7 +187,7 @@ function startWebRTC(iceservers) {
}).catch(log);
}
else if (pc.iceConnectionState === "disconnected") {
stopInputTimer();
stopGameInputTimer()
}
}

View file

@ -7,6 +7,7 @@ import (
"fmt"
"log"
"math/rand"
"runtime/debug"
"time"
"github.com/giongto35/cloud-game/config"
@ -264,6 +265,7 @@ func (w *WebRTC) startStreaming(vp8Track *webrtc.Track, opusTrack *webrtc.Track)
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from err", r)
log.Println(debug.Stack())
}
}()
@ -283,6 +285,7 @@ func (w *WebRTC) startStreaming(vp8Track *webrtc.Track, opusTrack *webrtc.Track)
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from err", r)
log.Println(debug.Stack())
}
}()

View file

@ -103,7 +103,7 @@ func (r *Room) startVideo(width, height int) {
var err error
if config.Codec == config.CODEC_H264 {
encoder, err = h264encoder.NewH264Encoder(width, height, 20)
encoder, err = h264encoder.NewH264Encoder(width, height, 1)
} else {
encoder, err = vpxencoder.NewVpxEncoder(width, height, 20, 1200, 5)
}