golanggohlsrtmpwebrtcmedia-serverobs-studiortcprtmp-proxyrtmp-serverrtprtsprtsp-proxyrtsp-relayrtsp-serversrtstreamingwebrtc-proxy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
334 lines
14 KiB
334 lines
14 KiB
package defs |
|
|
|
import ( |
|
"time" |
|
|
|
"github.com/google/uuid" |
|
|
|
"github.com/bluenviron/mediamtx/internal/conf" |
|
) |
|
|
|
// APIError is a generic error. |
|
type APIError struct { |
|
Error string `json:"error"` |
|
} |
|
|
|
// APIPathConfList is a list of path configurations. |
|
type APIPathConfList struct { |
|
ItemCount int `json:"itemCount"` |
|
PageCount int `json:"pageCount"` |
|
Items []*conf.Path `json:"items"` |
|
} |
|
|
|
// APIPathSourceOrReader is a source or a reader. |
|
type APIPathSourceOrReader struct { |
|
Type string `json:"type"` |
|
ID string `json:"id"` |
|
} |
|
|
|
// APIPath is a path. |
|
type APIPath struct { |
|
Name string `json:"name"` |
|
ConfName string `json:"confName"` |
|
Source *APIPathSourceOrReader `json:"source"` |
|
Ready bool `json:"ready"` |
|
ReadyTime *time.Time `json:"readyTime"` |
|
Tracks []string `json:"tracks"` |
|
BytesReceived uint64 `json:"bytesReceived"` |
|
BytesSent uint64 `json:"bytesSent"` |
|
Readers []APIPathSourceOrReader `json:"readers"` |
|
} |
|
|
|
// APIPathList is a list of paths. |
|
type APIPathList struct { |
|
ItemCount int `json:"itemCount"` |
|
PageCount int `json:"pageCount"` |
|
Items []*APIPath `json:"items"` |
|
} |
|
|
|
// APIHLSMuxer is an HLS muxer. |
|
type APIHLSMuxer struct { |
|
Path string `json:"path"` |
|
Created time.Time `json:"created"` |
|
LastRequest time.Time `json:"lastRequest"` |
|
BytesSent uint64 `json:"bytesSent"` |
|
} |
|
|
|
// APIHLSMuxerList is a list of HLS muxers. |
|
type APIHLSMuxerList struct { |
|
ItemCount int `json:"itemCount"` |
|
PageCount int `json:"pageCount"` |
|
Items []*APIHLSMuxer `json:"items"` |
|
} |
|
|
|
// APIRTMPConnState is the state of a RTMP connection. |
|
type APIRTMPConnState string |
|
|
|
// states. |
|
const ( |
|
APIRTMPConnStateIdle APIRTMPConnState = "idle" |
|
APIRTMPConnStateRead APIRTMPConnState = "read" |
|
APIRTMPConnStatePublish APIRTMPConnState = "publish" |
|
) |
|
|
|
// APIRTMPConn is a RTMP connection. |
|
type APIRTMPConn struct { |
|
ID uuid.UUID `json:"id"` |
|
Created time.Time `json:"created"` |
|
RemoteAddr string `json:"remoteAddr"` |
|
State APIRTMPConnState `json:"state"` |
|
Path string `json:"path"` |
|
Query string `json:"query"` |
|
BytesReceived uint64 `json:"bytesReceived"` |
|
BytesSent uint64 `json:"bytesSent"` |
|
} |
|
|
|
// APIRTMPConnList is a list of RTMP connections. |
|
type APIRTMPConnList struct { |
|
ItemCount int `json:"itemCount"` |
|
PageCount int `json:"pageCount"` |
|
Items []*APIRTMPConn `json:"items"` |
|
} |
|
|
|
// APIRTSPConn is a RTSP connection. |
|
type APIRTSPConn struct { |
|
ID uuid.UUID `json:"id"` |
|
Created time.Time `json:"created"` |
|
RemoteAddr string `json:"remoteAddr"` |
|
BytesReceived uint64 `json:"bytesReceived"` |
|
BytesSent uint64 `json:"bytesSent"` |
|
} |
|
|
|
// APIRTSPConnsList is a list of RTSP connections. |
|
type APIRTSPConnsList struct { |
|
ItemCount int `json:"itemCount"` |
|
PageCount int `json:"pageCount"` |
|
Items []*APIRTSPConn `json:"items"` |
|
} |
|
|
|
// APIRTSPSessionState is the state of a RTSP session. |
|
type APIRTSPSessionState string |
|
|
|
// states. |
|
const ( |
|
APIRTSPSessionStateIdle APIRTSPSessionState = "idle" |
|
APIRTSPSessionStateRead APIRTSPSessionState = "read" |
|
APIRTSPSessionStatePublish APIRTSPSessionState = "publish" |
|
) |
|
|
|
// APIRTSPSession is a RTSP session. |
|
type APIRTSPSession struct { |
|
ID uuid.UUID `json:"id"` |
|
Created time.Time `json:"created"` |
|
RemoteAddr string `json:"remoteAddr"` |
|
State APIRTSPSessionState `json:"state"` |
|
Path string `json:"path"` |
|
Query string `json:"query"` |
|
Transport *string `json:"transport"` |
|
BytesReceived uint64 `json:"bytesReceived"` |
|
BytesSent uint64 `json:"bytesSent"` |
|
} |
|
|
|
// APIRTSPSessionList is a list of RTSP sessions. |
|
type APIRTSPSessionList struct { |
|
ItemCount int `json:"itemCount"` |
|
PageCount int `json:"pageCount"` |
|
Items []*APIRTSPSession `json:"items"` |
|
} |
|
|
|
// APISRTConnState is the state of a SRT connection. |
|
type APISRTConnState string |
|
|
|
// states. |
|
const ( |
|
APISRTConnStateIdle APISRTConnState = "idle" |
|
APISRTConnStateRead APISRTConnState = "read" |
|
APISRTConnStatePublish APISRTConnState = "publish" |
|
) |
|
|
|
// APISRTConn is a SRT connection. |
|
type APISRTConn struct { |
|
ID uuid.UUID `json:"id"` |
|
Created time.Time `json:"created"` |
|
RemoteAddr string `json:"remoteAddr"` |
|
State APISRTConnState `json:"state"` |
|
Path string `json:"path"` |
|
Query string `json:"query"` |
|
|
|
// The metric names/comments are pulled from GoSRT |
|
|
|
// The total number of sent DATA packets, including retransmitted packets |
|
PacketsSent uint64 `json:"packetsSent"` |
|
// The total number of received DATA packets, including retransmitted packets |
|
PacketsReceived uint64 `json:"packetsReceived"` |
|
// The total number of unique DATA packets sent by the SRT sender |
|
PacketsSentUnique uint64 `json:"packetsSentUnique"` |
|
// The total number of unique original, retransmitted or recovered by the packet filter DATA packets |
|
// received in time, decrypted without errors and, as a result, scheduled for delivery to the |
|
// upstream application by the SRT receiver. |
|
PacketsReceivedUnique uint64 `json:"packetsReceivedUnique"` |
|
// The total number of data packets considered or reported as lost at the sender side. |
|
// Does not correspond to the packets detected as lost at the receiver side. |
|
PacketsSendLoss uint64 `json:"packetsSendLoss"` |
|
// The total number of SRT DATA packets detected as presently missing (either reordered or lost) at the receiver side |
|
PacketsReceivedLoss uint64 `json:"packetsReceivedLoss"` |
|
// The total number of retransmitted packets sent by the SRT sender |
|
PacketsRetrans uint64 `json:"packetsRetrans"` |
|
// The total number of retransmitted packets registered at the receiver side |
|
PacketsReceivedRetrans uint64 `json:"packetsReceivedRetrans"` |
|
// The total number of sent ACK (Acknowledgement) control packets |
|
PacketsSentACK uint64 `json:"packetsSentACK"` |
|
// The total number of received ACK (Acknowledgement) control packets |
|
PacketsReceivedACK uint64 `json:"packetsReceivedACK"` |
|
// The total number of sent NAK (Negative Acknowledgement) control packets |
|
PacketsSentNAK uint64 `json:"packetsSentNAK"` |
|
// The total number of received NAK (Negative Acknowledgement) control packets |
|
PacketsReceivedNAK uint64 `json:"packetsReceivedNAK"` |
|
// The total number of sent KM (Key Material) control packets |
|
PacketsSentKM uint64 `json:"packetsSentKM"` |
|
// The total number of received KM (Key Material) control packets |
|
PacketsReceivedKM uint64 `json:"packetsReceivedKM"` |
|
// The total accumulated time in microseconds, during which the SRT sender has some data to transmit, |
|
// including packets that have been sent, but not yet acknowledged |
|
UsSndDuration uint64 `json:"usSndDuration"` |
|
// ?? |
|
PacketsReceivedBelated uint64 `json:"packetsReceivedBelated"` |
|
// The total number of dropped by the SRT sender DATA packets that have no chance to be delivered in time |
|
PacketsSendDrop uint64 `json:"packetsSendDrop"` |
|
// The total number of dropped by the SRT receiver and, as a result, |
|
// not delivered to the upstream application DATA packets |
|
PacketsReceivedDrop uint64 `json:"packetsReceivedDrop"` |
|
// The total number of packets that failed to be decrypted at the receiver side |
|
PacketsReceivedUndecrypt uint64 `json:"packetsReceivedUndecrypt"` |
|
|
|
// Same as packetsReceived, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) |
|
BytesReceived uint64 `json:"bytesReceived"` |
|
// Same as packetsSent, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) |
|
BytesSent uint64 `json:"bytesSent"` |
|
// Same as packetsSentUnique, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) |
|
BytesSentUnique uint64 `json:"bytesSentUnique"` |
|
// Same as packetsReceivedUnique, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) |
|
BytesReceivedUnique uint64 `json:"bytesReceivedUnique"` |
|
// Same as packetsReceivedLoss, but expressed in bytes, including payload and all the headers (IP, TCP, SRT), |
|
// bytes for the presently missing (either reordered or lost) packets' payloads are estimated |
|
// based on the average packet size |
|
BytesReceivedLoss uint64 `json:"bytesReceivedLoss"` |
|
// Same as packetsRetrans, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) |
|
BytesRetrans uint64 `json:"bytesRetrans"` |
|
// Same as packetsReceivedRetrans, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) |
|
BytesReceivedRetrans uint64 `json:"bytesReceivedRetrans"` |
|
// Same as PacketsReceivedBelated, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) |
|
BytesReceivedBelated uint64 `json:"bytesReceivedBelated"` |
|
// Same as packetsSendDrop, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) |
|
BytesSendDrop uint64 `json:"bytesSendDrop"` |
|
// Same as packetsReceivedDrop, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) |
|
BytesReceivedDrop uint64 `json:"bytesReceivedDrop"` |
|
// Same as packetsReceivedUndecrypt, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) |
|
BytesReceivedUndecrypt uint64 `json:"bytesReceivedUndecrypt"` |
|
|
|
// Current minimum time interval between which consecutive packets are sent, in microseconds |
|
UsPacketsSendPeriod float64 `json:"usPacketsSendPeriod"` |
|
// The maximum number of packets that can be "in flight" |
|
PacketsFlowWindow uint64 `json:"packetsFlowWindow"` |
|
// The number of packets in flight |
|
PacketsFlightSize uint64 `json:"packetsFlightSize"` |
|
// Smoothed round-trip time (SRTT), an exponentially-weighted moving average (EWMA) |
|
// of an endpoint's RTT samples, in milliseconds |
|
MsRTT float64 `json:"msRTT"` |
|
// Current transmission bandwidth, in Mbps |
|
MbpsSendRate float64 `json:"mbpsSendRate"` |
|
// Current receiving bandwidth, in Mbps |
|
MbpsReceiveRate float64 `json:"mbpsReceiveRate"` |
|
// Estimated capacity of the network link, in Mbps |
|
MbpsLinkCapacity float64 `json:"mbpsLinkCapacity"` |
|
// The available space in the sender's buffer, in bytes |
|
BytesAvailSendBuf uint64 `json:"bytesAvailSendBuf"` |
|
// The available space in the receiver's buffer, in bytes |
|
BytesAvailReceiveBuf uint64 `json:"bytesAvailReceiveBuf"` |
|
// Transmission bandwidth limit, in Mbps |
|
MbpsMaxBW float64 `json:"mbpsMaxBW"` |
|
// Maximum Segment Size (MSS), in bytes |
|
ByteMSS uint64 `json:"byteMSS"` |
|
// The number of packets in the sender's buffer that are already scheduled |
|
// for sending or even possibly sent, but not yet acknowledged |
|
PacketsSendBuf uint64 `json:"packetsSendBuf"` |
|
// Instantaneous (current) value of packetsSndBuf, but expressed in bytes, |
|
// including payload and all headers (IP, TCP, SRT) |
|
BytesSendBuf uint64 `json:"bytesSendBuf"` |
|
// The timespan (msec) of packets in the sender's buffer (unacknowledged packets) |
|
MsSendBuf uint64 `json:"msSendBuf"` |
|
// Timestamp-based Packet Delivery Delay value of the peer |
|
MsSendTsbPdDelay uint64 `json:"msSendTsbPdDelay"` |
|
// The number of acknowledged packets in receiver's buffer |
|
PacketsReceiveBuf uint64 `json:"packetsReceiveBuf"` |
|
// Instantaneous (current) value of packetsRcvBuf, expressed in bytes, including payload and all headers (IP, TCP, SRT) |
|
BytesReceiveBuf uint64 `json:"bytesReceiveBuf"` |
|
// The timespan (msec) of acknowledged packets in the receiver's buffer |
|
MsReceiveBuf uint64 `json:"msReceiveBuf"` |
|
// Timestamp-based Packet Delivery Delay value set on the socket via SRTO_RCVLATENCY or SRTO_LATENCY |
|
MsReceiveTsbPdDelay uint64 `json:"msReceiveTsbPdDelay"` |
|
// Instant value of the packet reorder tolerance |
|
PacketsReorderTolerance uint64 `json:"packetsReorderTolerance"` |
|
// Accumulated difference between the current time and the time-to-play of a packet that is received late |
|
PacketsReceivedAvgBelatedTime uint64 `json:"packetsReceivedAvgBelatedTime"` |
|
// Percentage of resent data vs. sent data |
|
PacketsSendLossRate float64 `json:"packetsSendLossRate"` |
|
// Percentage of retransmitted data vs. received data |
|
PacketsReceivedLossRate float64 `json:"packetsReceivedLossRate"` |
|
} |
|
|
|
// APISRTConnList is a list of SRT connections. |
|
type APISRTConnList struct { |
|
ItemCount int `json:"itemCount"` |
|
PageCount int `json:"pageCount"` |
|
Items []*APISRTConn `json:"items"` |
|
} |
|
|
|
// APIWebRTCSessionState is the state of a WebRTC connection. |
|
type APIWebRTCSessionState string |
|
|
|
// states. |
|
const ( |
|
APIWebRTCSessionStateRead APIWebRTCSessionState = "read" |
|
APIWebRTCSessionStatePublish APIWebRTCSessionState = "publish" |
|
) |
|
|
|
// APIWebRTCSession is a WebRTC session. |
|
type APIWebRTCSession struct { |
|
ID uuid.UUID `json:"id"` |
|
Created time.Time `json:"created"` |
|
RemoteAddr string `json:"remoteAddr"` |
|
PeerConnectionEstablished bool `json:"peerConnectionEstablished"` |
|
LocalCandidate string `json:"localCandidate"` |
|
RemoteCandidate string `json:"remoteCandidate"` |
|
State APIWebRTCSessionState `json:"state"` |
|
Path string `json:"path"` |
|
Query string `json:"query"` |
|
BytesReceived uint64 `json:"bytesReceived"` |
|
BytesSent uint64 `json:"bytesSent"` |
|
} |
|
|
|
// APIWebRTCSessionList is a list of WebRTC sessions. |
|
type APIWebRTCSessionList struct { |
|
ItemCount int `json:"itemCount"` |
|
PageCount int `json:"pageCount"` |
|
Items []*APIWebRTCSession `json:"items"` |
|
} |
|
|
|
// APIRecordingSegment is a recording segment. |
|
type APIRecordingSegment struct { |
|
Start time.Time `json:"start"` |
|
} |
|
|
|
// APIRecording is a recording. |
|
type APIRecording struct { |
|
Name string `json:"name"` |
|
Segments []*APIRecordingSegment `json:"segments"` |
|
} |
|
|
|
// APIRecordingList is a list of recordings. |
|
type APIRecordingList struct { |
|
ItemCount int `json:"itemCount"` |
|
PageCount int `json:"pageCount"` |
|
Items []*APIRecording `json:"items"` |
|
}
|
|
|