opus编解码相关介绍
本文主要讲解在实际开发中遇到的关于Opus的编解码问题
SDP中OPUS介绍在 SDP 中,任何其它采样率都不起作用,在 rtp 传输时默认采用 48000, 可以在 rfc7587 Section 4.1 中查看如下所示:
1234567Opus supports 5 different audio bandwidths, which can be adjustedduring a stream. The RTP timestamp is incremented with a 48000 Hzclock rate for all modes of Opus and all sampling rates. The unitfor the timestamp is samples per single (mono) channel. The RTPtimestamp corresponds to the sample time of the first encoded samplein the encoded frame. For data encoded with sampli ...
wireshark抓包分析音视频
本文主要记录通过 wireshark 抓音视频的分析方法
win上抓包分析window上面主要以导入 lua 解析文件为主
在 wireshark 安装目录下面,有个 init.lua, 在其中加入如下所示内容:
1dofile(USER_DIR..filename)
导入成功后,重启wireshark, 在工具栏中就会出现导入的 lua 文件名字。
随后到 编辑->首选项->协议 中根据需要解码的音视频,填写 payload 值
最后,当获取到 *.pcap 文件后,点击 工具->lua的名字 运行即可
linux上抓包分析opus此处步骤仅用于在 linux 上,通过命令行的形式分析 opus
获取 python 脚本,opus_stream_tool
tcpdump -i eth0 port 1234 -w in.pcap
tshark -x -r in.pcap -Y “udp.srcport == myport” | cut -d “ “ -f 1-20 > tmp.txt
hex_to_opus.py -x tmp.txt –reco ...
通信发展与通信原理
引用CMDA系统通信复习-多路复用的三种方法:频分复用,时分复用,码分复用
sip-i与sip-t的区别i
全球语音网络正在向基于IP的通信系统迁移。然而,现有的PSTN网络将继续存在一段时间。因此,VOIP和PSTN之间的互连能力在如今的语音市场上扮演重要的角色。
就像两种语言之间的翻译(英语<->荷兰语),两个系统的映射作为基本的互连功能出现。
SIP-I和SIP-T是两种类似的方法,用于ISUP网络和SIP网络之间的互通,换句话说,就是PSTN和VoIP网络。具体来说,它们有助于通过SIP网络传送ISUP参数,这样在ISUP网络上发起和终止的呼叫就可以通过SIP网络转接,而不会丢失信息。
SIP-I和SIP-T都定义了SIP和ISUP网络之间的消息、参数和错误代码的映射。它们都可以与SIP网络上符合要求的SIP网络组件完全互操作。
SIP-I和SIP-T允许ISUP参数在SIP网络中透明传输的方式是,在入口处的PSTN网关将原始ISUP消息的字面副本附加到SIP消息中;这个ISUP消息作为另一个主体出现在SIP消息中。
SIP-I 与 SIP-T 的不同点
SIP-I是由ITU在2004年开发的(定义在ITU-T Q.1912.5),而SIP-T是由开发SIP的IETF(互 ...
janus的admin/api详解
此处讲解的 API 是用于检索 janus 的服务器信息和进行一部分的操作能力。如果你对插件内部的异步通知感兴趣,请通过 janus_eventhandler 机理
你可以通过配置 janus.transport.http.jcfg 中关于 admin API 部分,配置开启与关闭。其中你可以采用密码的形式或其它形式对访问 admin API 进行限制
当你使用 websockets 的时候,必须使用 Janus -admin-protocol 作为子协议。(可以参考janus-protocol)
Admin API Requests以下是不同的请求方式
普通请求其中除了 info 都采用 https://192.168.1.51:7889/admin post的形式。
info: 用于获取服务器的一些信息,不需要秘钥即可请求
request(get)
12// 后面的数字为时间戳 https://192.168.1.51:7889/admin/info?_=1652582968747
response
123456789101112131415161718192021222 ...
FFmpeg在Win编译并运行
本人选择编译的 FFmpeg 不是在 Linux 环境下面,也不是在 Win 环境下面的模拟 Linux 环境(例如:mgwin、cygwin)。
使用 vs 搭建 FFmpeg,其主要目的是为了方便调试与学习。本人较为喜欢 vs 的调试。
采用的 FFmpeg 是专门为 Win 环境做了适配。
环境
环境名
版本
WIN
WIN10
VS
vs2017
基础的搭建关于最基本的搭建内容有很多文章都有关于这方面的叙述,此处我将只会叙述一个大概主要的安装流程。
至于其中更详细内容可以参考下面的引用
第一步:创建文件夹目录,目录结构如下所示 1234- msvc (OutputDir) - source - FFmpeg - ..Any other libraries source code..
第二步:使用 FFmpeg 项目目录下面的 project_get_dependencies.bat 脚本运行并获取依赖项目。
注意:此处由于国内的原因,可以采用代 ...
视频会议简单认识
引言音视频通话主要需要解决以下几个问题,怎么找到对方;如何与对方连接以及如何看到(听到)对方。那么音视频会议就是要解决如何管理控制音视频通话。
如何发现对方信令视频会议系统经过几十年的发展,信令层面两分天下。传统视频会议设备一般走 H323 协议,互联网一般走 SIP 协议。但是随着互联网的高速发展,目前的会议设备与会议系统都同时支持 H323 与 SIP 协议,其中 H323 一般作为网关用于支持一些专业的视频会议终端,SIP 作为集群部署时服务间的信令通信。其中代表有华为、思科等老牌视频会议方案供应商。至于提供公共视频会议的方案的厂商(如腾讯、阿里),一般采用自有的私有协议,需要第三方厂商或自己去开发以支持 SIP 协议。
库
sofia-sip
h323Plus
jssip
如何与对面连接SDP 与 COTURN音视频在复杂网络环境下的音视频流传输一直是一个问题,此问题一般只有大厂(如:思科、华为等)才能有成熟的解决方案。目前,开源的 WebRTC 通过 SDP 与 COTURN 解决了在复杂网络环境的连接问题。
库
coturn
rtpegine
如何看到与听到对方音视频采 ...
FFmpeg的配置安装错误记录
本文主要记录本人在编译安装 FFmpeg 的时候出现的各种问题,这种问题出现在各种环境中,因而我会标明不同的环境下面。
当然主要环境分为三大类 Win、Linux和交叉编译,Mac本人没有就不算在里面。
“libavutil/avconfig.h”: No such file or directory
背景:我在 Win 环境中编译 FreeSWITCH 的 mod_av 模块的时候,这个模块依赖于 FFmpeg,因而总是报这个错误。
错误信息:
解决:
方案一:这个文件是中的内容是自动生成的,最好的方式让其能够自己生成(由于 FreeSWITCH 的 FFmpeg 只配置了x64 平台的,所以 debug 运行时需要选择 x64 平台,否则会出现这个问题)
方案二:直接从外部拷贝一个已经生成好的文件到此处即可,在 Linux 平台上编译了的话就会搜索到这个文件
方案三:直接创建该文件并复制其中的内容 123456/* Generated by ffmpeg configure */#ifndef AVUTIL_AVCONFIG_H#define AVUTIL_AVCONF ...
FreeSWITCH中管理依赖下载方式
由于本人不是纯正的 VS 开发人员,本人一直很疑惑 FreeSWITCH 是如何管理它的所有依赖下载的,以及下载后的依赖如何编译进入 FreeSWWITCH 的整体项目中的。
因而这里记录下在我实际开发过程中,发现的 FreeSWITCH 的管理依赖的方式。
依赖下载我们首先要确定 FreeSWITCH 都有哪些依赖内容,他们的依赖内容是什么样子的。
FreeSWITCH 依赖的都是例如 ffmpeg、libyuv 等这种成熟的项目,因而肯定需要从外部进行下载,这些从外部的下载肯定有具体的配置位置。
开发中发现本地的依赖项目都是通过 vs 的属性管理器进行依赖管理,这个属于 vs 的依赖管理,因而很容易就思考到是否也是采用同样的方式进行远程的这种依赖。
那么,我们就要在属性管理器中看下这些依赖是否在这里配置,很显然属性配置器中无法看到具体的下载内容。我们立即想到去看源文件。
最终,我们可以在 w32 中发现各种标有 download 开头的 props 文件,直接打开文件就可以看到里面的带有 http 下载链接的属性
依赖如何打包进 FS 中从上面我们已经知道了 FS 中的依赖下载,下 ...
FreeSWITCH解析originate命令
我们在实现任何外部呼叫能力的时候无论如何都绕不开 originate 命令或者说 bridge。
当然为了简单起见,我这里先跟着 originate 进行源代码分析。
环境
环境名
版本
WIN
WIN10
FS
1.10.0
VS
vs2017
originate_functionmod_commands 这个模块,集成 FreeSWITCH 大部分的命令,而 originate 命令就是其中的一个命令。位于 mod_commands.c 中,
其中代码如下 :
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697#define ORIGINATE_SYNTAX ...