pion最简单webrtc例子

前言

pion是一个纯用golang写的开源webrtc项目,目前github上大部分webrtc开源都是使用c++写的。本人认为pion对于一个webrtc入门者来说golang的语法相对简单,你这样可以更好的关注webrtc协议。如果业务场景不是特别高,业务上只做sfu转发服务器的话,可以尝试用golang来做。
读这篇文章你需要稍微了解webrtc的协议。

例子

pion也有提供不少的例子,我这边写了一个我自认为最简单,只能接受一个流的例子。这个例子平铺直叙,走了一个完整的webrtc流程,需要配合前端https://jsfiddle.net/1jc4go7v/当然需要注意的是前端只有publish能用。

整体下来就是:

  1. 创建peerconnection,设置stun服务器
  2. 设置对端的sdp
  3. 创建自己协商的answer,设置answer
  4. 等待candidate收集完成,输出序列化后的sdp信息

这边就是一个最简单的接受流的例子。


package main

import (
   "encoding/base64"
   "encoding/json"
   "fmt"
   "github.com/pion/webrtc/v3"
)

func main() {
   

   //创建pc, 并且指定stun服务器
   pc, err := webrtc.NewPeerConnection(webrtc.Configuration{
   
      ICEServers: []webrtc.ICEServer{
   
         {
   
            URLs: []string{
   "stun:stun.l.google.com:19302"},
         },
      },
   })

   if err != nil {
   
      panic(err.Error())
   }

   sdp := webrtc.SessionDescription{
   }
   //todo:这边需要你自己设置对端的sdp信息
   sdpStr := "eyJ0eXBlIjoib2ZmZXIiLCJzZHAiOiJ2PTBcclxubz0tIDE2OTQ4Nzk1NDc5OTk0ODE3MDYgMiBJTiBJUDQgMTI3LjAuMC4xXHJcbnM9LVxyXG50PTAgMFxyXG5hPWdyb3VwOkJVTkRMRSAwXHJcbmE9ZXh0bWFwLWFsbG93LW1peGVkXHJcbmE9bXNpZC1zZW1hbnRpYzogV01TIE1PQ0xmd21HT1hwRG41dlB5R3lyZU5nclJ0Y2xQR2xCVmdjSlxyXG5tPXZpZGVvIDUzMzUxIFVEUC9UTFMvUlRQL1NBVlBGIDk2IDk3IDk4IDk5IDEwMCAxMDEgMTAyIDEyMSAxMjcgMTIwIDEyNSAxMDcgMTA4IDEwOSAzNSAzNiAxMjQgMTE5IDEyMyAxMTggMTE0IDExNSAxMTZcclxuYz1JTiBJUDQgNDcuOTEuMjE2LjE5XHJcbmE9cnRjcDo5IElOIElQNCAwLjAuMC4wXHJcbmE9Y2FuZGlkYXRlOjIwOTQwMjg4ODIgMSB1ZHAgMjEyMjI2MD
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值