自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 [源码分析]webrtc音频流从接收到播放的关键流程

neteq中对音频流的RTP数据包进行了处理和解码操作。同时数据出现了跨线程的投递。如图所示,音频流从接收到播放的核心关键流程和执行线程。后面将添加对neteq模块的细节分析。后面有空补上核心对象之间的关系图。

2024-02-27 19:55:09 417

原创 pjmedia音频会议桥核心工作流程

会议桥的关键组件都抽象成port,几个常用port之间的关系sound_port 负责采集和播放,是核心驱动内核。conference_port 负责处理数据流,将音频数据分发到目标port。stream_port 是普通port的一种实现,负责从网络收发编解码音频流。wav_player 也是普通port的一种。在会议桥中,会给每个port编号(solt),同时支持两个port之间相互连接。sound_port 的编号一般是0,其他port大于1.

2024-01-23 16:24:23 402 1

原创 pjlib的pool实现细节和用法推荐

如图所示,pool模块核心数据结构之间的关系。一个caching_pool 可以创建和管理多个 pool。一个pool可以申请创建多个block内存空间。

2024-01-19 14:25:53 382

原创 pjlib库os.h接口分析-

具体方法:首先去github下载最新的源代码,然后打开头文件,使用翻译软件初步解读注释内容,然后打开单元测试,查看官方推荐用法。pjlib整体功能说明:封装操作系统常用接口,统一代码风格,方便跨平台。不同的操作系统都提供了 进程、线程、线程同步、线程锁、信号量,网络编程的相关接口。

2024-01-18 14:34:07 923

原创 pjsip jbuf adaptive 行为分析

4 * 20 ms 时应当收到 seq 5 ,到 10 * 20 ms jbuf 报告帧丢失。写入socket的数据会一直缓存,等信号恢复时则一下全部被发送出去。jbuf最少要有5个包才能出帧,如果出现大量丢包,jbuf中始终凑不齐5个包,则可以一直等待,播放静音。这个时候如果jbuf太小的话就容易击穿jbuf,jbuf会主动清理丢弃前面的音频帧数据。1) 我们看到jbuf 输入5帧后才开始出帧,第7个周期才能get获取到缓冲音频数据。这时音频已经音频已经延时 7 * 20 = 140 ms。

2024-01-16 16:12:01 366

原创 手机遥控器的设想

前段时间追剧,看剧的话一般会全屏,并且离屏幕远一点。但是键盘往往比较离屏幕很近。键盘也离人比较远。看剧过程中,总有一些不合心意的片段想要跳过,这个时候就有一个难点,要起身去操作键盘。所以想开发一个远程手机遥控电脑这样的软件,这样可以躺在沙发上刷剧了。手机控制跳过不想看的片段。程序结构:windows服务程序。接收APP信号,模拟按键安卓APP局域网搜索PC设备常见的鼠键布局按键按键后发送信号到服务...

2021-04-29 19:36:16 129

原创 ONVIF客户端搜索设备获取rtsp地址(完整可用源码)

1、下载 gSOAP2、解压gsoap_2.8.114.zip, 找到目录gsoap\bin\win32,设置为Path,或者复制文件夹下的exe到Path。3、创建生成源码目录,并在gsoap解压目录的一下文件拷贝到generate目录gsoap\typemap.dat ,gsoap\stdsoap2.h,stdsoap2.c,gsoap\dom.c4 、生成onvif头文件5、生成onvif代码6、generated文件夹中所有源码添加到vs工工程7、解决openss...

2021-04-22 19:47:35 1012

原创 FFmpeg的硬件编解码例子

FFmpeg 自带的硬件解码的例子hw_decode.c/* * Copyright (c) 2017 Jun Zhao * Copyright (c) 2017 Kaixuan Liu * * HW Acceleration API (video decoding) decode sample * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this soft

2021-04-17 18:19:12 1653

原创 cmake 使用的常用配置项目例子

cmake_minimum_required(VERSION 2.8.11)project(XXX)# 搜索目标文件夹文件列表file(GLOB SRC ${CMAKE_CURRENT_LIST_DIR}/src/*)# CMAKE_CURRENT_LIST_DIR CMAKE文件(CMakeLists.txt和.cmake)所在目录# CMAKE_CURRENT_BINRARY_DIR # cmake 工程构建目录; 如果有add_subdirectory subdir 目录下的CMake.

2021-04-17 17:48:25 328

原创 线程编程的一些常见问题,和同步对象Event使用场景的一些认识

开发一个稍微复杂的程序就免不了启动一个或者多个工作线程。还有一些线程需要一直运行,接收任务和处理任务。线程的大致结构是:void ThreadProc(){ while(true){ Task t* = GetTask(); t->doTask(); Sleep(1000); }}新手在线这样的任务线程时容易犯的错误是线程难以销毁,难以退出。于是我们想到可以设置运行标志forceQuit,当forceQuit等于1的时

2021-04-17 16:19:26 71

原创 使用MSVC编译x264的办法

1、安装VS2、安装msys3、下载x264源码执行:1、启动 vcvars32.bat 安装vc环境到cmd。比如:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat2、使用以上 cmd 打开x264源码目录。3、启动msys比如call "D:\msys2\msys64\msys2_shell.cmd" -full-pa...

2021-01-25 20:05:28 1007

原创 1、什么是duktape?

duktape是一个精简的嵌入式JavaScript引擎,可以看做精简版的V8。引擎运行需要的资源少,项目目标是支持集成运行到嵌入式设备上。公司一个项目,要集成duktape。于是就学习了一下duktap。我们知道很多基础项目都是C/C++等语言写成的,这样更贴近底层,性能也是最好的。这样的基础项目会提供一些API供上层调用。我们要完成一些项目时,大部分情况都不需要自己造轮子,而是使用别人...

2019-10-24 20:30:07 1505

原创 error C2332: “struct”: 缺少标记名

今天遇到一个问题,一个工程引用到一个头文件时总是报这个错误, 检查头文件也找不出什么问题,甚至使用使用其他工程引用也是可以正常编译。有可能是变量名和其他工程引用的宏名称一样导致了冲突,改掉头文件中声明的变量名就可以正常编译了。...

2019-07-08 12:14:42 2230

原创 关于pjsip音视频对接的接口问题

https://github.com/pjsip/pjproject/blob/master/pjsip-apps/src/3rdparty_media_sample/alt_pjsua_aud.chttps://github.com/pjsip/pjproject/blob/master/pjsip-apps/src/3rdparty_media_sample/alt_pjsua_vid.c...

2019-05-29 10:49:12 1512 2

原创 Linux 程序发布时Glibc的坑

我认为Linux下最大的坑就是Glibc 和Glibc++的版本问题了。有时候我们编译了一个程序,发送给别人运行的时候,然后就报glibc :xx.xx not found 这种情况出现得多了你就想杀人。这个时候 你除了找一个glic 版本低的发行版编译程序外无能为力。

2018-02-01 16:35:59 1170

原创 关于VS编译连接的坑。 (/MT) (/MTd) (/MD) (/MDd)

OLDNAMES.lib(read.obi) : error LNK2001: 无法解析的外部符号 __imp__read 微软给程序默认使用的运行库是 (/MD) (/MDd) 都是动态的运行库。有的时候包含了一个第三方库,一链接就是一堆的报错,然后运行库改成(/MT) (/MTd) 后就能够正常链接了。但是如果一不小心再包含其他库,其他库是使用 (/MD) (/MDd) 生成的,结果...

2017-07-24 21:12:36 1741

原创 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

今天通过Ubuntu 的APT 指令安装MySql 后,通过运行,service mysql start 启动的mysql 的服务。部分教程有提到mysqld 的服务,但是并没有这样的服务名,然后通过mysql -uroot -p  指令运行,结果反复的报这个错误。ERROR 2002 (HY000): Can't connect to local MySQL server throu

2017-07-20 18:34:29 15596

qt5.15.0_mt

windows 版本的qt编译库,带mt的。注意只有Release版本的,Debug版本的exe会出现assert中断,导致程序无法运行,如果需要调试可以在Release中设置允许输出pdb。 使用VS2019生成。 configure.bat -static -prefix "D:\work\third_party\qt\qt-5.15.0\MT\Release" -confirm-license -opensource -release -platform win32-msvc -nomake examples -nomake tests -opengl desktop -mp -force-debug-info

2020-12-28

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除