diff --git a/plugins/obs-webrtc/whip-output.cpp b/plugins/obs-webrtc/whip-output.cpp index 739161af4..05a0f4035 100644 --- a/plugins/obs-webrtc/whip-output.cpp +++ b/plugins/obs-webrtc/whip-output.cpp @@ -1,6 +1,8 @@ #include "whip-output.h" #include "whip-utils.h" +#include + /* * Sets the maximum size for a video fragment. Effective range is * 576-1470, with a lower value equating to more packets created, @@ -147,6 +149,9 @@ void WHIPOutput::ConfigureVideoTrack(std::string media_stream_id, std::string cn if (!encoder) return; + OBSDataAutoRelease settings = obs_encoder_get_settings(encoder); + auto video_bitrate = (int)obs_data_get_int(settings, "bitrate"); + const char *codec = obs_encoder_get_codec(encoder); if (strcmp("h264", codec) == 0) { video_description.addH264Codec(video_payload_type); @@ -171,6 +176,11 @@ void WHIPOutput::ConfigureVideoTrack(std::string media_stream_id, std::string cn packetizer->addToChain(video_sr_reporter); packetizer->addToChain(std::make_shared(video_nack_buffer_size)); + if (video_bitrate != 0) { + packetizer->addToChain(std::make_shared(static_cast(video_bitrate * 10000), + std::chrono::milliseconds(5))); + } + video_track = peer_connection->addTrack(video_description); video_track->setMediaHandler(packetizer); }