[*] 服务端录像资源释放

This commit is contained in:
acgist
2023-06-09 08:17:29 +08:00
parent 1d8fd815fa
commit 70227447fc
8 changed files with 22 additions and 22 deletions

View File

@@ -8,8 +8,6 @@ android {
defaultConfig { defaultConfig {
minSdk rootProject.ext.taoyao.minSdk minSdk rootProject.ext.taoyao.minSdk
targetSdk rootProject.ext.taoyao.targetSdk targetSdk rootProject.ext.taoyao.targetSdk
versionCode rootProject.ext.taoyao.versionCode
versionName rootProject.ext.taoyao.versionName
consumerProguardFiles "consumer-rules.pro" consumerProguardFiles "consumer-rules.pro"
} }
buildTypes { buildTypes {

View File

@@ -1,6 +1,6 @@
plugins { plugins {
id 'com.android.library' version '7.4.2' apply false id 'com.android.library' version '8.0.1' apply false
id 'com.android.application' version '7.4.2' apply false id 'com.android.application' version '8.0.1' apply false
} }
ext { ext {
taoyao = [ taoyao = [

View File

@@ -10,7 +10,6 @@ android {
targetSdk rootProject.ext.taoyao.targetSdk targetSdk rootProject.ext.taoyao.targetSdk
versionCode rootProject.ext.taoyao.versionCode versionCode rootProject.ext.taoyao.versionCode
versionName rootProject.ext.taoyao.versionName versionName rootProject.ext.taoyao.versionName
consumerProguardFiles "consumer-rules.pro"
applicationId "com.acgist.taoyao.client" applicationId "com.acgist.taoyao.client"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }

View File

@@ -1,3 +1,5 @@
org.gradle.jvmargs=-Xmx512m -Dfile.encoding=UTF-8 org.gradle.jvmargs=-Xmx512m -Dfile.encoding=UTF-8
android.useAndroidX=true android.useAndroidX=true
android.nonFinalResIds=false
android.nonTransitiveRClass=true android.nonTransitiveRClass=true
android.defaults.buildfeatures.buildconfig=true

View File

@@ -1,6 +1,6 @@
#Mon Mar 20 09:51:37 CST 2023 #Mon Mar 20 09:51:37 CST 2023
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists

View File

@@ -12,8 +12,6 @@ android {
defaultConfig { defaultConfig {
minSdk rootProject.ext.taoyao.minSdk minSdk rootProject.ext.taoyao.minSdk
targetSdk rootProject.ext.taoyao.targetSdk targetSdk rootProject.ext.taoyao.targetSdk
versionCode rootProject.ext.taoyao.versionCode
versionName rootProject.ext.taoyao.versionName
consumerProguardFiles "consumer-rules.pro" consumerProguardFiles "consumer-rules.pro"
externalNativeBuild { externalNativeBuild {
cmake { cmake {

View File

@@ -900,7 +900,7 @@ class Taoyao {
if(!filepath || !videoConsumer) { if(!filepath || !videoConsumer) {
return; return;
} }
if(++index >= 10) { if(++index > 10) {
console.warn("请求录像关键帧次数超限", filepath, index); console.warn("请求录像关键帧次数超限", filepath, index);
return; return;
} }

View File

@@ -31,16 +31,17 @@ import com.acgist.taoyao.signal.protocol.ProtocolControlAdapter;
body = { body = {
""" """
{ {
"to": "目标终端ID", "to" : "目标终端ID",
"roomId": "房间ID", "roomId" : "房间ID",
"enabled": 是否录像true|false "enabled": 是否录像true|false
} }
""", """,
""" """
{ {
"roomId": "房间ID", "roomId" : "房间ID",
"enabled": 是否录像true|false, "enabled" : 是否录像true|false,
"filepath": "视频文件路径" "filepath": "视频文件路径",
"clientId": "录像终端ID"
} }
""" """
}, },
@@ -66,7 +67,7 @@ public class ControlServerRecordProtocol extends ProtocolControlAdapter implemen
@Override @Override
public void execute(String clientId, ClientType clientType, Client client, Client targetClient, Message message, Map<String, Object> body) { public void execute(String clientId, ClientType clientType, Client client, Client targetClient, Message message, Map<String, Object> body) {
String filepath; String filepath;
final String roomId = MapUtils.get(body, Constant.ROOM_ID); final String roomId = MapUtils.get(body, Constant.ROOM_ID);
final Boolean enabled = MapUtils.get(body, Constant.ENABLED, Boolean.TRUE); final Boolean enabled = MapUtils.get(body, Constant.ENABLED, Boolean.TRUE);
final Room room = this.roomManager.room(roomId); final Room room = this.roomManager.room(roomId);
if(enabled) { if(enabled) {
@@ -75,6 +76,7 @@ public class ControlServerRecordProtocol extends ProtocolControlAdapter implemen
filepath = this.stop(room, room.clientWrapper(client)); filepath = this.stop(room, room.clientWrapper(client));
} }
body.put(Constant.FILEPATH, filepath); body.put(Constant.FILEPATH, filepath);
body.put(Constant.CLIENT_ID, clientId);
client.push(message); client.push(message);
} }
@@ -87,7 +89,7 @@ public class ControlServerRecordProtocol extends ProtocolControlAdapter implemen
*/ */
public Message execute(String roomId, String clientId, Boolean enabled) { public Message execute(String roomId, String clientId, Boolean enabled) {
String filepath; String filepath;
final Room room = this.roomManager.room(roomId); final Room room = this.roomManager.room(roomId);
final Client client = this.clientManager.clients(clientId); final Client client = this.clientManager.clients(clientId);
if(enabled) { if(enabled) {
filepath = this.start(room, room.clientWrapper(client)); filepath = this.start(room, room.clientWrapper(client));
@@ -95,9 +97,10 @@ public class ControlServerRecordProtocol extends ProtocolControlAdapter implemen
filepath = this.stop(room, room.clientWrapper(client)); filepath = this.stop(room, room.clientWrapper(client));
} }
return Message.success(Map.of( return Message.success(Map.of(
Constant.ROOM_ID, roomId, Constant.ROOM_ID, roomId,
Constant.ENABLED, enabled, Constant.ENABLED, enabled,
Constant.FILEPATH, filepath Constant.FILEPATH, filepath,
Constant.CLIENT_ID, clientId
)); ));
} }
@@ -181,14 +184,14 @@ public class ControlServerRecordProtocol extends ProtocolControlAdapter implemen
// 关闭媒体录像 // 关闭媒体录像
final Message message = this.build(); final Message message = this.build();
final Map<String, Object> body = new HashMap<>(); final Map<String, Object> body = new HashMap<>();
body.put(Constant.ROOM_ID, room.getRoomId());
body.put(Constant.ENABLED, false);
body.put(Constant.AUDIO_STREAM_ID, recorder.getAudioStreamId()); body.put(Constant.AUDIO_STREAM_ID, recorder.getAudioStreamId());
body.put(Constant.VIDEO_STREAM_ID, recorder.getVideoStreamId()); body.put(Constant.VIDEO_STREAM_ID, recorder.getVideoStreamId());
body.put(Constant.AUDIO_CONSUMER_ID, recorder.getAudioConsumerId()); body.put(Constant.AUDIO_CONSUMER_ID, recorder.getAudioConsumerId());
body.put(Constant.VIDEO_CONSUMER_ID, recorder.getVideoConsumerId()); body.put(Constant.VIDEO_CONSUMER_ID, recorder.getVideoConsumerId());
body.put(Constant.AUDIO_TRANSPORT_ID, recorder.getAudioTransportId()); body.put(Constant.AUDIO_TRANSPORT_ID, recorder.getAudioTransportId());
body.put(Constant.VIDEO_TRANSPORT_ID, recorder.getVideoConsumerId()); body.put(Constant.VIDEO_TRANSPORT_ID, recorder.getVideoTransportId());
body.put(Constant.ROOM_ID, room.getRoomId());
body.put(Constant.ENABLED, false);
message.setBody(body); message.setBody(body);
final Client mediaClient = room.getMediaClient(); final Client mediaClient = room.getMediaClient();
mediaClient.request(message); mediaClient.request(message);