import uuid
import logging
from aiortc import RTCPeerConnection, RTCSessionDescription
from aiortc.contrib.media import MediaRelay, MediaRecorder, MediaBlackhole
from video_transform_track import VideoTransformTrack
pcs = set()
pc_logger = logging.getLogger("peer_connection")
relay = MediaRelay()
record_to = None
dc = None
async def connect(request):
parmas = await request.json()
offer = RTCSessionDescription(sdp=parmas["sdp"], type=parmas["type"])
pc = RTCPeerConnection()
pc_id = "PeerConnection(%s)" % uuid.uuid4()
pcs.add(pc)
def log_info(msg, *args):
pc_logger.info(pc_id+" "+msg, *args)
log_info("created for %s", request.remote)
if record_to is not None:
recorder = MediaRecorder(record_to)
else:
recorder = MediaBlackhole()
@pc.on("datachannel")
def on_datachannel(channel):
global dc
dc = channel
@channel.on("message")
def on_message(message):
if isinstance(message, str) and message.startswith("ping"):
channel.send("pong"+message[4:1])
@pc.on("connectionstatechange")
async def on_connectionstatechange():
if pc.connectionState == "failed":
logging.info("connection lost")
await pc.close()
pcs.discard(pc)
@pc.on("track")
def on_track(track):
if record_to is not None:
# 录视频
pc_logger.info("start to record " + record_to)
recorder.addTrack(relay.subscribe(track))
logging.info(parmas["constraints"])
pc.addTrack(VideoTransformTrack(parmas["constraints"]["video"],relay.subscribe(track)))
@track.on("ended")
async def on_ended():
if record_to is not None:
pc_logger.info("stop to record " + record_to)
recorder.stop
await recorder.start()
await pc.setRemoteDescription(offer)
answer = await pc.createAnswer()
await pc.setLocalDescription(answer)
return pc

onnx
- 粉丝: 1w+
最新资源
- 消防信息化建设-智慧消防方案.pptx
- 人工智能发展中算法公开能否解决算法歧视(1).docx
- 【推荐下载】工业互联网大势所趋-全球产业格局将变(1).pdf
- 进程通信技术集成演示系统报告书(1).docx
- 试析基于IP网络的新型通信应用技术(1).docx
- 中学教师计算机使用管理制度(1).docx
- 体验式模拟软件在市场营销教学中的应用研究(1).docx
- 营改增财务会计制度及核算软件备案报告书样表(1).doc
- 互联网家装竞争格局分析PPT.pptx
- 互联网+背景下四川省大学生创业成果的传播路径探讨(1).docx
- 常用无线通信协议(1).doc
- 编译原理符号表(1).pptx
- 本科毕业设计--基于单片机的数字时钟的设计说明书(1).doc
- 互联网时代下口碑营销问题和对策研究(1).docx
- 第2章-Java编程基础-补充案例.doc
- 浅谈基于医院管理的信息化建设-1(1).docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


