ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【webrtc】demo 测试 peerconnection_server 和 peerconnection_client

2022-01-29 15:30:00  阅读:410  来源: 互联网

标签:capture 启动 demo server peerconnection webrtc 客户端


文章目录


imge


前言

参考 vs2019 下载编译 WebRTC 最新源码
编译完成后进入webrtc-checkout\src\out\project 目录,编译好的库文件和exe都在这个目录下面。

  • peerconnection_server.exe
  • peerconnection_client.exe

启动服务器

双击 peerconnection_server.exe 启动服务器

控制台显示以下内容表示服务器启动成功

(field_trial.cc:140): Setting field trial string:
Server listening on port 8888

也可以指定端口号启动,默认端口号:8888

./peerconnection_server --port=8888

启动客户端1

双击 peerconnection_client.exe 启动客户端1,默认server是本地地址。

**注意事项:**默认启动后是 localhost ,不知道为什么我必须改成 127.0.0.1 才可以连接服务器成功。

翻阅资料得出结果是因为 windows 把 localhost 解析为 ipv6 地址 ::1 而不是 127.0.0.1。查了hosts 把ipv6已经屏蔽了,127.0.0.1 localhost 也有,就是不能正常解析。

在这里插入图片描述

启动客户端2

在局域网的另一台电脑启动第二个客户端,填写运行 server 的主机 ip 地址
在这里插入图片描述
为了方便截图,我将两个客户端都运行再一台主机(需要有两个摄像头设备),一个客户端分配一个摄像头。如果只有一个硬件摄像头,可以安装 obs studio 启动虚拟摄像头作为第二个摄像头。

然后双击用户名进入 p2p 通话

在这里插入图片描述

注意事项

如果 p2p通话时候发生闪退,需要修改以下代码并重新编译

编译webrtc
ninja -C out/project -j 8

webrtc-checkout\src\modules\video_capture\windows\sink_filter_ds.cc

STDMETHODIMP CaptureInputPin::Receive(IMediaSample* media_sample) {
  //RTC_DCHECK_RUN_ON(&capture_checker_);   // 这行代码注释掉,解决 p2p 连接闪退问题

  CaptureSinkFilter* const filter = static_cast<CaptureSinkFilter*>(Filter());

  if (flushing_.load(std::memory_order_relaxed))
    return S_FALSE;

  if (runtime_error_.load(std::memory_order_relaxed))
    return VFW_E_RUNTIME_ERROR;

  if (!capture_thread_id_) {
    // Make sure we set the thread name only once.
    capture_thread_id_ = GetCurrentThreadId();
    rtc::SetCurrentThreadName("webrtc_video_capture");
  }

sink_filter_ds.cc

总结

如果需要下断点调试则在另一台主机运行 peerconnection_client客户端1,调试主机打开 vs2019 将 peerconnection_client 项目设置为启动项目,F5 启动调试。


技术参考

  1. 本文部分技术点出处:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发

标签:capture,启动,demo,server,peerconnection,webrtc,客户端
来源: https://blog.csdn.net/qq_33844311/article/details/122743509

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有