mirror of
https://github.com/bluenviron/mediamtx.git
synced 2025-12-25 12:32:01 -08:00
move forwardTrack into serverTcpListener
This commit is contained in:
parent
e072bdf0b4
commit
fae52b415c
4 changed files with 38 additions and 38 deletions
36
main.go
36
main.go
|
|
@ -3,13 +3,11 @@ package main
|
|||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
"os"
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/aler9/gortsplib"
|
||||
"gopkg.in/alecthomas/kingpin.v2"
|
||||
)
|
||||
|
||||
|
|
@ -156,40 +154,6 @@ func newProgram(args args) (*program, error) {
|
|||
return p, nil
|
||||
}
|
||||
|
||||
func (p *program) forwardTrack(path string, id int, flow trackFlow, frame []byte) {
|
||||
for c := range p.rtspl.clients {
|
||||
if c.path == path && c.state == _CLIENT_STATE_PLAY {
|
||||
if c.streamProtocol == _STREAM_PROTOCOL_UDP {
|
||||
if flow == _TRACK_FLOW_RTP {
|
||||
p.rtpl.write <- &udpWrite{
|
||||
addr: &net.UDPAddr{
|
||||
IP: c.ip(),
|
||||
Zone: c.zone(),
|
||||
Port: c.streamTracks[id].rtpPort,
|
||||
},
|
||||
buf: frame,
|
||||
}
|
||||
} else {
|
||||
p.rtcpl.write <- &udpWrite{
|
||||
addr: &net.UDPAddr{
|
||||
IP: c.ip(),
|
||||
Zone: c.zone(),
|
||||
Port: c.streamTracks[id].rtcpPort,
|
||||
},
|
||||
buf: frame,
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
c.write <- &gortsplib.InterleavedFrame{
|
||||
Channel: trackToInterleavedChannel(id, flow),
|
||||
Content: frame,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
kingpin.CommandLine.Help = "rtsp-simple-server " + Version + "\n\n" +
|
||||
"RTSP server."
|
||||
|
|
|
|||
|
|
@ -864,7 +864,7 @@ func (c *serverClient) handleRequest(req *gortsplib.Request) bool {
|
|||
}
|
||||
|
||||
c.p.rtspl.mutex.RLock()
|
||||
c.p.forwardTrack(c.path, trackId, trackFlow, frame.Content)
|
||||
c.p.rtspl.forwardTrack(c.path, trackId, trackFlow, frame.Content)
|
||||
c.p.rtspl.mutex.RUnlock()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import (
|
|||
"log"
|
||||
"net"
|
||||
"sync"
|
||||
|
||||
"github.com/aler9/gortsplib"
|
||||
)
|
||||
|
||||
type serverTcpListener struct {
|
||||
|
|
@ -48,3 +50,37 @@ func (l *serverTcpListener) run() {
|
|||
go rsc.run()
|
||||
}
|
||||
}
|
||||
|
||||
func (l *serverTcpListener) forwardTrack(path string, id int, flow trackFlow, frame []byte) {
|
||||
for c := range l.clients {
|
||||
if c.path == path && c.state == _CLIENT_STATE_PLAY {
|
||||
if c.streamProtocol == _STREAM_PROTOCOL_UDP {
|
||||
if flow == _TRACK_FLOW_RTP {
|
||||
l.p.rtpl.write <- &udpWrite{
|
||||
addr: &net.UDPAddr{
|
||||
IP: c.ip(),
|
||||
Zone: c.zone(),
|
||||
Port: c.streamTracks[id].rtpPort,
|
||||
},
|
||||
buf: frame,
|
||||
}
|
||||
} else {
|
||||
l.p.rtcpl.write <- &udpWrite{
|
||||
addr: &net.UDPAddr{
|
||||
IP: c.ip(),
|
||||
Zone: c.zone(),
|
||||
Port: c.streamTracks[id].rtcpPort,
|
||||
},
|
||||
buf: frame,
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
c.write <- &gortsplib.InterleavedFrame{
|
||||
Channel: trackToInterleavedChannel(id, flow),
|
||||
Content: frame,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ func (l *serverUdpListener) run() {
|
|||
return
|
||||
}
|
||||
|
||||
l.p.forwardTrack(path, trackId, l.flow, buf[:n])
|
||||
l.p.rtspl.forwardTrack(path, trackId, l.flow, buf[:n])
|
||||
}()
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue