diff --git a/plugins/obs-outputs/librtmp/rtmp.c b/plugins/obs-outputs/librtmp/rtmp.c index a017b079fe5f459718c21aadcd531d596430a4a4..8b471fb74ae3273d5f5d78d4f15d01a68849b9b2 100644 --- a/plugins/obs-outputs/librtmp/rtmp.c +++ b/plugins/obs-outputs/librtmp/rtmp.c @@ -32,6 +32,8 @@ #include "rtmp_sys.h" #include "log.h" +#include + #ifdef CRYPTO #ifdef __APPLE__ @@ -773,6 +775,8 @@ RTMP_Connect0(RTMP *r, struct sockaddr * service, socklen_t addrlen) } } + uint64_t connect_start = os_gettime_ns(); + if (connect(r->m_sb.sb_socket, service, addrlen) < 0) { int err = GetSockError(); @@ -789,6 +793,8 @@ RTMP_Connect0(RTMP *r, struct sockaddr * service, socklen_t addrlen) return FALSE; } + r->connect_time_ms = (int)((os_gettime_ns() - connect_start) / 1000000); + if (r->Link.socksport) { RTMP_Log(RTMP_LOGDEBUG, "%s ... SOCKS negotiation", __FUNCTION__); diff --git a/plugins/obs-outputs/librtmp/rtmp.h b/plugins/obs-outputs/librtmp/rtmp.h index bc59c5799ee68af5c285099e7b33315361ddc4cd..aeb35f980af5a3abe628f735d2f26cc505fc869e 100644 --- a/plugins/obs-outputs/librtmp/rtmp.h +++ b/plugins/obs-outputs/librtmp/rtmp.h @@ -324,6 +324,7 @@ extern "C" RTMPPacket m_write; RTMPSockBuf m_sb; RTMP_LNK Link; + int connect_time_ms; } RTMP; int RTMP_ParseURL(const char *url, int *protocol, AVal *host, diff --git a/plugins/obs-outputs/rtmp-stream.c b/plugins/obs-outputs/rtmp-stream.c index 803cf30820017e8c31ff017849ddcf5fd60b1fa5..1e2de1b3888203fd0926062364dfd9b553959f33 100644 --- a/plugins/obs-outputs/rtmp-stream.c +++ b/plugins/obs-outputs/rtmp-stream.c @@ -1090,6 +1090,12 @@ static float rtmp_stream_congestion(void *data) return stream->min_priority > 0 ? 1.0f : stream->congestion; } +static int rtmp_stream_connect_time(void *data) +{ + struct rtmp_stream *stream = data; + return stream->rtmp.connect_time_ms; +} + struct obs_output_info rtmp_output_info = { .id = "rtmp_output", .flags = OBS_OUTPUT_AV | @@ -1106,5 +1112,6 @@ struct obs_output_info rtmp_output_info = { .get_properties = rtmp_stream_properties, .get_total_bytes = rtmp_stream_total_bytes_sent, .get_congestion = rtmp_stream_congestion, + .get_connect_time_ms= rtmp_stream_connect_time, .get_dropped_frames = rtmp_stream_dropped_frames };