[*] 日常优化
This commit is contained in:
@@ -921,17 +921,15 @@ class Taoyao {
|
|||||||
});
|
});
|
||||||
consumer.observer.on("resume", () => {
|
consumer.observer.on("resume", () => {
|
||||||
console.debug("消费者恢复", consumer.id, streamId);
|
console.debug("消费者恢复", consumer.id, streamId);
|
||||||
me.push(
|
me.push(protocol.buildMessage("media::consumer::resume", {
|
||||||
protocol.buildMessage("media::consumer::resume", {
|
|
||||||
roomId,
|
roomId,
|
||||||
consumerId: consumer.id
|
consumerId: consumer.id
|
||||||
})
|
}));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
// await consumer.enableTraceEvent([ 'pli', 'fir', 'rtp', 'nack', 'keyframe' ]);
|
// await consumer.enableTraceEvent([ 'pli', 'fir', 'rtp', 'nack', 'keyframe' ]);
|
||||||
// consumer.observer.on("trace", fn(trace));
|
// consumer.observer.on("trace", fn(trace));
|
||||||
// consumer.on("trace", (trace) => {
|
// consumer.on("trace", (trace) => {
|
||||||
// console.info("消费者跟踪事件(trace)", consumer.id, streamId, trace);
|
// console.debug("消费者跟踪事件(trace)", consumer.id, streamId, trace);
|
||||||
// });
|
// });
|
||||||
// 等待终端准备就绪:可以不用等待直接使用push方法
|
// 等待终端准备就绪:可以不用等待直接使用push方法
|
||||||
await me.request(protocol.buildMessage("media::consume", {
|
await me.request(protocol.buildMessage("media::consume", {
|
||||||
@@ -1021,21 +1019,23 @@ class Taoyao {
|
|||||||
/**
|
/**
|
||||||
* 恢复消费者信令
|
* 恢复消费者信令
|
||||||
*
|
*
|
||||||
* @param {*} message 消息
|
* @param {*} message 信令消息
|
||||||
* @param {*} body 消息主体
|
* @param {*} body 消息主体
|
||||||
*/
|
*/
|
||||||
async mediaConsumerResume(message, body) {
|
async mediaConsumerResume(message, body) {
|
||||||
const me = this;
|
const {
|
||||||
const { roomId, consumerId } = body;
|
roomId,
|
||||||
const room = me.rooms.get(roomId);
|
consumerId
|
||||||
|
} = body;
|
||||||
|
const room = this.rooms.get(roomId);
|
||||||
const consumer = room?.consumers.get(consumerId);
|
const consumer = room?.consumers.get(consumerId);
|
||||||
if(consumer) {
|
if(!consumer) {
|
||||||
|
console.warn("恢复消费者(消费者无效)", consumerId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
consumer.localPaused = false;
|
consumer.localPaused = false;
|
||||||
console.debug("恢复消费者", consumerId);
|
console.debug("恢复消费者", consumerId);
|
||||||
await consumer.resume();
|
await consumer.resume();
|
||||||
} else {
|
|
||||||
console.debug("恢复消费者(无效)", consumerId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1600,48 +1600,6 @@ class Taoyao extends RemoteClient {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 恢复消费者信令
|
|
||||||
*
|
|
||||||
* @param {*} consumerId 消费者ID
|
|
||||||
*/
|
|
||||||
mediaConsumerResume(consumerId) {
|
|
||||||
const me = this;
|
|
||||||
const consumer = me.consumers.get(consumerId);
|
|
||||||
if(consumer) {
|
|
||||||
if(!consumer.paused) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
console.debug("恢复消费者", consumerId);
|
|
||||||
me.push(protocol.buildMessage("media::consumer::resume", {
|
|
||||||
roomId : me.roomId,
|
|
||||||
consumerId: consumerId,
|
|
||||||
}));
|
|
||||||
} else {
|
|
||||||
console.debug("恢复消费者无效", consumerId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 恢复消费者信令
|
|
||||||
*
|
|
||||||
* @param {*} message 信令消息
|
|
||||||
*/
|
|
||||||
defaultMediaConsumerResume(message) {
|
|
||||||
const me = this;
|
|
||||||
const {
|
|
||||||
roomId,
|
|
||||||
consumerId
|
|
||||||
} = message.body;
|
|
||||||
const consumer = me.consumers.get(consumerId);
|
|
||||||
if (consumer) {
|
|
||||||
console.debug("恢复消费者", consumerId);
|
|
||||||
consumer.resume();
|
|
||||||
} else {
|
|
||||||
console.debug("恢复消费者无效", consumerId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 消费媒体信令
|
* 消费媒体信令
|
||||||
*
|
*
|
||||||
@@ -1748,6 +1706,50 @@ class Taoyao extends RemoteClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 恢复消费者信令
|
||||||
|
*
|
||||||
|
* @param {*} consumerId 消费者ID
|
||||||
|
*/
|
||||||
|
mediaConsumerResume(consumerId) {
|
||||||
|
const consumer = this.consumers.get(consumerId);
|
||||||
|
if(!consumer) {
|
||||||
|
console.debug("恢复消费者(消费者无效)", consumerId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(!consumer.paused) {
|
||||||
|
console.debug("恢复消费者(消费者已经恢复)", consumerId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.debug("恢复消费者", consumerId);
|
||||||
|
this.push(protocol.buildMessage("media::consumer::resume", {
|
||||||
|
consumerId,
|
||||||
|
roomId: this.roomId,
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 恢复消费者信令
|
||||||
|
*
|
||||||
|
* @param {*} message 信令消息
|
||||||
|
*/
|
||||||
|
defaultMediaConsumerResume(message) {
|
||||||
|
const {
|
||||||
|
consumerId
|
||||||
|
} = message.body;
|
||||||
|
const consumer = this.consumers.get(consumerId);
|
||||||
|
if (!consumer) {
|
||||||
|
console.debug("恢复消费者(消费者无效)", consumerId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(!consumer.paused) {
|
||||||
|
console.debug("恢复消费者(消费者已经恢复)", consumerId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.debug("恢复消费者", consumerId);
|
||||||
|
consumer.resume();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 媒体消费者评分信令
|
* 媒体消费者评分信令
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -30,6 +30,24 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
* VP8 = 101
|
* VP8 = 101
|
||||||
* H264 = 107
|
* H264 = 107
|
||||||
*
|
*
|
||||||
|
* 注意:媒体格式和录制格式一致可以直接使用`copy`代替格式参数减小`CPU`占用
|
||||||
|
*
|
||||||
|
* OPUS/VP8->AAC/H264(TS)
|
||||||
|
* ffmpeg -y -protocol_whitelist "file,rtp,udp" -thread_queue_size 1024 -c:a libopus -c:v libvpx -r:v 30 -i taoyao.sdp -c:a aac -c:v h264 -f mpegts taoyao.ts
|
||||||
|
* ffmpeg -y -protocol_whitelist "file,rtp,udp" -thread_queue_size 1024 -c:a libopus -c:v libvpx -r:v 30 -i taoyao.sdp -c:a aac -c:v h264 -f mpegts taoyao.ts
|
||||||
|
*
|
||||||
|
* OPUS/VP8->AAC/H264(MP4)
|
||||||
|
* ffmpeg -y -protocol_whitelist "file,rtp,udp" -thread_queue_size 1024 -c:a libopus -c:v libvpx -r:v 30 -i taoyao.sdp -c:a aac -c:v h264 taoyao.mp4
|
||||||
|
* ffmpeg -y -protocol_whitelist "file,rtp,udp" -thread_queue_size 1024 -c:a libopus -c:v libvpx -r:v 30 -i taoyao.sdp -c:a aac -c:v h264 taoyao.mp4
|
||||||
|
*
|
||||||
|
* PCMU/H264->AAC/H264(TS)
|
||||||
|
* ffmpeg -y -protocol_whitelist "file,rtp,udp" -thread_queue_size 1024 -i taoyao.sdp -c:a aac -c:v h264 -f mpegts taoyao.ts
|
||||||
|
* ffmpeg -y -protocol_whitelist "file,rtp,udp" -thread_queue_size 1024 -i taoyao.sdp -c:a aac -c:v h264 -f mpegts taoyao.ts
|
||||||
|
*
|
||||||
|
* PCMU/H264->AAC/H264(MP4)
|
||||||
|
* ffmpeg -y -protocol_whitelist "file,rtp,udp" -thread_queue_size 1024 -i taoyao.sdp -c:a aac -c:v copy taoyao.mp4
|
||||||
|
* ffmpeg -y -protocol_whitelist "file,rtp,udp" -thread_queue_size 1024 -i taoyao.sdp -c:a aac -c:v copy taoyao.mp4
|
||||||
|
*
|
||||||
* @author acgist
|
* @author acgist
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|||||||
@@ -33,7 +33,10 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
"consumerId": "消费者ID"
|
"consumerId": "消费者ID"
|
||||||
}
|
}
|
||||||
""",
|
""",
|
||||||
flow = "终端->信令服务->媒体服务->信令服务->终端"
|
flow = {
|
||||||
|
"终端->信令服务->媒体服务->信令服务->终端",
|
||||||
|
"终端-[恢复生产者]>信令服务->媒体服务-[恢复消费者]>信令服务->终端"
|
||||||
|
}
|
||||||
)
|
)
|
||||||
public class MediaConsumerResumeProtocol extends ProtocolRoomAdapter implements ApplicationListener<MediaConsumerResumeEvent> {
|
public class MediaConsumerResumeProtocol extends ProtocolRoomAdapter implements ApplicationListener<MediaConsumerResumeEvent> {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user