cmake的使用记录
cmake 在 win 中的编译需要使用的一些配置,主要是记录曾经使用情况
Release 生成PDB123set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
cmake原生中的配置
123set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELWITHDEBINFO ...
powershell安装配置内容
PowerShell 配置脚本123456789101112131415161718Import-Module DirColorsSet-Alias bb "busybox" Set-Alias vim "nvim"Set-Alias vi "nvim"Set-Alias open "explorer.exe"Set-Alias which "gcm"Set-Alias vscode "code"Set-Alias ll "ls"Set-Alias android "D:\Install\IDE\Android Studio\bin\studio64.exe"Set-Alias yd "C:\Users\heping\Documents\WindowsPowerShell\yd.ps1"function locate{ if ($args[0].StartsWith("-" ...
FreeSWITCH问题分析
本文主要讲解在实际运维过程中容易出现的问题现象以及导致其出现问题的根本原因,可能附带有解决方法
30s挂断呼叫通没问题,但是会出现 30s 挂断。一般原因有以下几个方面:
外网端口与内网端口没有一对一映射:端口错误,导致客户端与 FS 的沟通出现网络无法连接问题,可能是 ACK 问题。
解决方案:将接口一对一映射
FS与opensip使用tls对接时,2分钟 tcp 断连opensips 本身有个参数 tcp_connection_lifetime 用于控制 tcp 的存活时长,此存活时长只能通过与服务端发送数据来延长时间,无法通过 tcp 本身的 keepalive 来进行保活。
最后,必须通过 fs 端发送 option 来延长 tcp 的存活时间。想要实现在通话中发送 option,那么必须使用 gateway ,并在 gateway 中配置 ping 来发送 option。
其中,option 存在问题还没开始通话就有 option 进行发送,其中的端口与通话的端口有什么关系呢?根据抓包发现:当前没通话,有新的呼叫创建情况下,有option,那就直接用option的端口 ...
WebRTC问题分析内容
WebRTC 的问题分析分析主要记录一些使用 WebRTC 过程中出现的问题,并且当前没有成体系的内容用于总结,简单的零散分析
WebRTC 的 oncandidate 时候失败,导致 setLocalDescription 耗时增加
问题:如标题所诉,由于在收集本地网络环境的,一些网卡(虚拟网卡等)的 ip,不具有连接网络的能力,导致在收集 IP 的时候会出现失败。
解决方案:监听来自 oncandidate 的事件,检测到有 relay 或 srly 的就可以直接调用 complete 1234567session.on("icecandidate", function (event) { if (event.candidate.type === "srflx" && event.candidate.relatedAddress !== null && event.candidate.relatedPort !== null) { event ...
WebRTC源码中文件的作用
本文主要讲解在 WebRTC 中一些文件的作用,并且其用途在编译过程中的一些用途。当然这些文件主要是一些配置文件,不包括源码文件
src 中源码
BUILD.gn:本文件主要包含了各种需要编译的各种源码,其中配置了编译 SDK 时,需要编译的源码。
DEPS:主要包含的是一些依赖文件,例如:openh264、ffmpeg等这类依赖文件
WebRTC在Mac中的编译
webrtc 在 mac 编译 Mac 与 IOS本文将会讲解在 mac 中从拉取代码到打包成 xcframework 的所有步骤,包中包括了ios 与 mac 的所有包。
设置代理编译 WebRTC 全程需要代理软件,所以建议设置好代理软件。
12export http_porxy="http://127.0.0.1:21087"export https_porxy="https://127.0.0.1:21087"
注意:即使在 MAC 中开启全局代理,仍然需要设置代理。本人编译时,没配置这个有时候出现无法下载外网资源,即使开了全局代理也没用。
安装 depot_toolsdepot_tools 是一套 Google 用来编译 WebRTC 的构建工具,获取 depot_tools 前,请先开启 VPN。
下载 depot_tools 解压到某个目录,然后配置系统环境
1export PATH=$PWD/depot_tools:$PATH
获取源代码获取源代码不能使用官网的源代 ...
WebRTC在ubuntu中编译android
本文将会讲解在 ubuntu 中拉取代码 flutter 中的 WebRTC 并打包成 android 可以使用的 aar。
注意:编译 Android 的时候,建议在国外的服务器上编译,否则可能出现无法获取各种依赖文件的问题
系统选择注意:在编译 android 端的 WebRTC 的时候必须选择 ubuntu,其中最好是采用以下版本
123456Ubuntu 14.04 LTS (trusty with EoL April 2022)Ubuntu 16.04 LTS (xenial with EoL April 2024)Ubuntu 18.04 LTS (bionic with EoL April 2028)Ubuntu 20.04 LTS (focal with Eol April 2030)Ubuntu 20.10 (groovy) Debian 10 (buster) or later
如果不是,那么可能遇到一些环境问题,需要手动修改源码
设置代理拉取 WebRTC 全程需要代理软件,所以请先设置好代理软件
12export http_proxy=http://192. ...
FreeSWITCH中xml_rpc的使用技巧
本文主要讲解在实际开发中,可能遇到的使用 xml_rpc 命令过程中的一些内容
查询 api 的命令查看 xml_rpc 中的命令通过如下方式即可,在浏览器中打开如下链接:http://127.0.0.1:8080/webapi/help
调试命令
通过 curl 调用 lua 程序,并传递参数,其中空格需要用 %20 替换 script1curl --user yw:yw@123 http://127.0.0.1:7652/webapi/luarun?call_phone.lua%20var
FreeSWITCH中mod的状态变化
本文主要讲述在 endpoint 的 mod 在启动关闭与呼叫、挂断等其中的状态变化内容
mod 的启动关闭此处的状态变化最为简单,只有两个回调函数,分别如下所示:
123SWITCH_MODULE_LOAD_FUNCTION(mod_test_load);SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_test_shutdown);SWITCH_MODULE_DEFINITION(mod_test, mod_test_load, mod_test_shutdown, NULL); // mod_test_runtime
一般 runtime 都没用,暂时不明白作用。有个这个定义后,再实现相应的启动关闭函数,如下所示:
1234567SWITCH_MODULE_LOAD_FUNCTION(mod_test_load) { /// 你想要实现内容,宏展开后有如下参数 /// switch_loadable_module_interface_t **module_interface, switch_memory_pool_t *pool ...
FreeSWITCH在Linux下编译模块编译
本文主要讲解在 Linux 环境下编译 FreeSWITCH 模块时的配置以及所遇到的问题
Linux 下编译 MOD 的配置
在 configure.ac 中配置需要编译模块的 makefile文件,例如:src/mod/endpoints/mod_verto/Makefile 123456789PKG_CHECK_MODULES([HIREDIS], [hiredis >= 0.10.0],[AM_CONDITIONAL([HAVE_HIREDIS],[true])],[AC_MSG_RESULT([no]); AM_CONDITIONAL([HAVE_HIREDIS],[false])])PKG_CHECK_MODULES([REDIS_PLUS], [redis++ >= 1.3.10],[AM_CONDITIONAL([HAVE_REDIS_PLUS],[true])],[AC_MSG_RESULT([no]); AM_CONDITIONAL([HAVE_REDIS_PLUS],[false])])src/mod/applications/mod_redis_p ...