我有一个工作的 WebRTC 客户端,我想使用 aiotrc (python) 通过 WebRTC 接收它的视频。另一个客户端作为收件人工作正常,我们已经使用浏览器对其进行了测试。
使用 python,我配置服务器,使用 Transceiver 创建一个报价(我只想接收视频),并将报价设置为 localDescription:
import json
import socketio
import asyncio
from asgiref.sync import async_to_sync
from aiortc import RTCPeerConnection, RTCSessionDescription, RTCIceCandidate, RTCConfiguration, RTCIceServer, RTCIceGatherer, RTCRtpTransceiver
session_id = 'default'
sio = socketio.Client()
ice_server = RTCIceServer(urls='stun:stun.l.google.com:19302')
pc = RTCPeerConnection(configuration=RTCConfiguration(iceServers=[ice_server]))
pc.addTransceiver("video", direction="recvonly")
def connect():
sio.connect('https://192.168.10.123', namespaces=['/live'])
connect()
@async_to_sync
async def set_local_description():
await pc.setLocalDescription(await pc.createOffer())
print('Local description set to: ', pc.localDescription)
#send_signaling_message(json.dumps({'sdp':{'sdp': pc.localDescription.sdp, 'type':pc.localDescription.type}}))
set_local_description()
(在这种情况下,socket.io 连接的地方是一个假地址)。在这之后,我不知道如何收集冰候选人。我尝试过使用 iceGatherer,但没有成功:
ice_gath = RTCIceGatherer(iceServers=[ice_server])
candidates = ice_gath.getLocalCandidates()
我必须将冰候选人发送给收件人。在这一点上,我找不到任何关于如何使用 aiortc 获取候选冰的信息。你下一步怎么做?