[*] setBitrate
This commit is contained in:
@@ -8,11 +8,7 @@
|
|||||||
#include "sdk/android/native_api/jni/scoped_java_ref.h"
|
#include "sdk/android/native_api/jni/scoped_java_ref.h"
|
||||||
|
|
||||||
#include "Log.hpp"
|
#include "Log.hpp"
|
||||||
#define private public
|
|
||||||
#define protected public
|
|
||||||
#include "RouterCallback.hpp"
|
#include "RouterCallback.hpp"
|
||||||
#undef private
|
|
||||||
#undef protected
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 视频房间头文件
|
* 视频房间头文件
|
||||||
@@ -182,10 +178,11 @@ namespace acgist {
|
|||||||
/**
|
/**
|
||||||
* 设置码率
|
* 设置码率
|
||||||
*
|
*
|
||||||
|
* @param maxFramerate 最大帧率
|
||||||
* @param minBitrate 最小码率
|
* @param minBitrate 最小码率
|
||||||
* @param maxBitrate 最大码率
|
* @param maxBitrate 最大码率
|
||||||
*/
|
*/
|
||||||
void setBitrate(int minBitrate, int maxBitrate);
|
void setBitrate(int maxFramerate, int minBitrate, int maxBitrate);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -552,20 +552,48 @@ namespace acgist {
|
|||||||
this->closeRoomCallback(env);
|
this->closeRoomCallback(env);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Room::setBitrate(int minBitrate, int maxBitrate) {
|
void Room::setBitrate(int maxFramerate, int minBitrate, int maxBitrate) {
|
||||||
|
// if(
|
||||||
|
// this->sendTransport == nullptr ||
|
||||||
|
// this->sendTransport->sendHandler == nullptr ||
|
||||||
|
// this->sendTransport->sendHandler->pc == nullptr ||
|
||||||
|
// this->sendTransport->sendHandler->pc->pc == nullptr
|
||||||
|
// ) {
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
// webrtc::BitrateSettings settings;
|
||||||
|
// settings.min_bitrate_bps = minBitrate;
|
||||||
|
// settings.max_bitrate_bps = maxBitrate;
|
||||||
|
// settings.start_bitrate_bps = minBitrate;
|
||||||
|
// this->sendTransport->sendHandler->pc->pc->SetBitrate(settings);
|
||||||
|
webrtc::RtpSenderInterface* rtpSender;
|
||||||
if(
|
if(
|
||||||
this->sendTransport == nullptr ||
|
this->videoProducer == nullptr ||
|
||||||
this->sendTransport->handler == nullptr ||
|
(rtpSender = this->videoProducer->GetRtpSender()) == nullptr
|
||||||
this->sendTransport->handler->pc == nullptr ||
|
|
||||||
this->sendTransport->handler->pc->pc == nullptr
|
|
||||||
) {
|
) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
webrtc::BitrateSettings settings;
|
webrtc::RtpParameters rtpParameters = rtpSender->GetParameters();
|
||||||
settings.min_bitrate_bps = minBitrate;
|
auto& encodings = rtpParameters.encodings;
|
||||||
settings.max_bitrate_bps = maxBitrate;
|
for(
|
||||||
settings.start_bitrate_bps = minBitrate;
|
auto iterator = encodings.begin();
|
||||||
this->sendTransport->handler->pc->pc->SetBitrate(settings);
|
iterator != encodings.end();
|
||||||
|
++iterator
|
||||||
|
) {
|
||||||
|
if(maxFramerate > 0) {
|
||||||
|
LOG_I("当前最大帧率:%d - %d - %f", maxFramerate, iterator->max_framerate, iterator->scale_resolution_down_by);
|
||||||
|
iterator->max_framerate = maxFramerate;
|
||||||
|
}
|
||||||
|
if(minBitrate > 0) {
|
||||||
|
LOG_I("当前最小码率:%d - %d", minBitrate, iterator->min_bitrate_bps);
|
||||||
|
iterator->min_bitrate_bps = minBitrate;
|
||||||
|
}
|
||||||
|
if(maxBitrate > 0) {
|
||||||
|
LOG_I("当前最大码率:%d - %d", maxBitrate, iterator->max_bitrate_bps);
|
||||||
|
iterator->max_bitrate_bps = maxBitrate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rtpSender->SetParameters(rtpParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" JNIEXPORT jlong JNICALL
|
extern "C" JNIEXPORT jlong JNICALL
|
||||||
@@ -744,12 +772,12 @@ namespace acgist {
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern "C" JNIEXPORT void JNICALL
|
extern "C" JNIEXPORT void JNICALL
|
||||||
Java_com_acgist_taoyao_media_client_Room_nativeSetBitrate(JNIEnv* env, jobject me, jlong nativeRoomPointer, jint minBitrate, jint maxBitrate) {
|
Java_com_acgist_taoyao_media_client_Room_nativeSetBitrate(JNIEnv* env, jobject me, jlong nativeRoomPointer, jint maxFramerate, jint minBitrate, jint maxBitrate) {
|
||||||
Room* room = (Room*) nativeRoomPointer;
|
Room* room = (Room*) nativeRoomPointer;
|
||||||
if(room == nullptr) {
|
if(room == nullptr) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
room->setBitrate(minBitrate, maxBitrate);
|
room->setBitrate(maxFramerate, minBitrate, maxBitrate);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -207,6 +207,8 @@ public class Room extends CloseableClient implements RouterCallback {
|
|||||||
iceServers = new ArrayList<>();
|
iceServers = new ArrayList<>();
|
||||||
}
|
}
|
||||||
this.rtcConfiguration = new PeerConnection.RTCConfiguration(iceServers);
|
this.rtcConfiguration = new PeerConnection.RTCConfiguration(iceServers);
|
||||||
|
// this.rtcConfiguration.enableCpuOveruseDetection = true;
|
||||||
|
|
||||||
// 开始协商
|
// 开始协商
|
||||||
return this.taoyao.requestFuture(
|
return this.taoyao.requestFuture(
|
||||||
this.taoyao.buildMessage("media::router::rtp::capabilities", "roomId", this.roomId),
|
this.taoyao.buildMessage("media::router::rtp::capabilities", "roomId", this.roomId),
|
||||||
@@ -383,13 +385,14 @@ public class Room extends CloseableClient implements RouterCallback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置码率
|
* 动态设置帧率码率
|
||||||
*
|
*
|
||||||
|
* @param maxFramerate 最大帧率
|
||||||
* @param minBitrate 最小码率
|
* @param minBitrate 最小码率
|
||||||
* @param maxBitrate 最大码率
|
* @param maxBitrate 最大码率
|
||||||
*/
|
*/
|
||||||
public void setBitrate(int minBitrate, int maxBitrate) {
|
public void setBitrate(int maxFramerate, int minBitrate, int maxBitrate) {
|
||||||
this.nativeSetBitrate(this.nativeRoomPointer, minBitrate, maxBitrate);
|
this.nativeSetBitrate(this.nativeRoomPointer, maxFramerate, minBitrate, maxBitrate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -787,9 +790,10 @@ public class Room extends CloseableClient implements RouterCallback {
|
|||||||
* Mediasoup设置码率
|
* Mediasoup设置码率
|
||||||
*
|
*
|
||||||
* @param nativeRoomPointer 房间指针
|
* @param nativeRoomPointer 房间指针
|
||||||
|
* @param maxFramerate 最大帧率
|
||||||
* @param minBitrate 最小码率
|
* @param minBitrate 最小码率
|
||||||
* @param maxBitrate 最大码率
|
* @param maxBitrate 最大码率
|
||||||
*/
|
*/
|
||||||
private native void nativeSetBitrate(long nativeRoomPointer, int minBitrate, int maxBitrate);
|
private native void nativeSetBitrate(long nativeRoomPointer, int maxFramerate, int minBitrate, int maxBitrate);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user