# young-webrtc-sdk **Repository Path**: BluesYoung-web/young-webrtc-sdk ## Basic Information - **Project Name**: young-webrtc-sdk - **Description**: 对于 webrtc 操作的封装 - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-11-21 - **Last Updated**: 2025-01-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 浏览器使用 webrtc 推拉媒体流 - [代码参考内容](http://ossrs.net/players/js/srs.sdk.js) ## RTC 对等连接建立流程 ```js const localPC = new RTCPeerConnection(); const remotePC = new RTCPeerConnection(); // 创建本地 offer const localOffer = await localPC.createOffer(); // 设置本地描述 localPC.setLocalDescription(localOffer); // 发送本地 offer 的 sdp 给对端,返回对端的 answer -> session const session = sendSdp(localOffer.sdp); // 对端接受 offer,作为远程描述 await remotePC.setRemoteDescription(new RTCSessionDescription({ type: 'offer', sdp: localOffer.sdp })); // 对端创建 answer,返回给本地 const answer = await remotePC.createAnswer(); // 将对端的 answer sdp 设置为远程描述 localPC.setRemoteDescription(new RTCSessionDescription({ type: 'answer', sdp: session.sdp })); ``` ## `/lib/reciver.ts` - 接收(播放)部分 ```ts import { WebRtcReciver } from './lib/reciver'; const rtc = new WebRtcReciver(); const play = async () => { const video = document.querySelector('#live_video') as HTMLVideoElement; // 先将直播流对象赋值给 video 的属性 video.srcObject = rtc.stream; try { await rtc.play('webrtc://192.168.31.216:1985/live/450564'); await video.play(); } catch (error) { console.log('------播放出错------'); console.log(error); } }; ``` ## `/lib/pusher.ts` - 推送(推流)部分 ```ts import { WebRtcPusher } from './lib/pusher'; const rtc = new WebRtcPusher(); const push = async () => { try { await rtc.push('webrtc://192.168.31.216:1985/live/450564'); } catch (error) { console.log('------推流出错------'); console.log(error); } } ```