- 博客(40)
- 资源 (12)
- 收藏
- 关注
原创 ffmpeg 实现多视频轨录制到同一个文件
在视频录制中,有时会碰到这样一个需求,将不同摄像头的画面写入到一个视频文件,这个叫法很多,有的厂家叫合流模式,有的叫多画面多流模式。无论如何,它们的实质都是在一个视频文件上实现多路不同分辨率视频的保存。经过调查,支持这种需求封装格式的有MP4、MOV、MKV 等,这里因为MP4 格式应用最广泛。
2023-12-04 14:43:43
1378
原创 ubuntu Setforeground 前台应用切换
windows 平台有Setforeground 这个api,可以根据进程ID,将某个应用的窗口切换到前台。ubuntu 并没有类似的api, 这里借助xdotool 这个第三方库,实现类似的功能。有这样一个系统,一个服务主进程用于接收指令,其它服务是独立的gui 程序,服务进程根据命令将对应的gui 程序切换到前台。git clone 后,直接make,生成动态库libxdo 和执行程序程序 xdotool。search 返回的ID 如果有多个,是因为一个进程有多个窗口,需要根据窗口标题再筛选。
2023-11-20 18:19:20
302
原创 System.Reflection.ReflectionTypeLoadException: 无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性。
节点,就可以看到哪些库加载出错。我的问题是VS2019 创建的工程,vs 2022编译就有问题,直接升级blc包就行。这个错网上说的挺多,就是不告诉怎么分析。将出错的代码用try catch 包起来。vs 打断点展开ex 下的。
2023-01-08 16:15:21
1813
原创 libopus 实现pcm 编码到opus
opus 是一种音频格式,常用于语音通话、视频会议中。最近做了个pcm 到opus 的编码,踩了不少坑,特此记录一下。
2022-08-29 11:14:07
5879
6
原创 Windbg 快速定位C# 动态库依赖问题
部署 C# windows 程序的时候,经常会遇到在开发环境中跑得好好的,在客户电脑莫名奇妙找不到库,导致无法正常启动程序。话不多说,正文开始。然后在出现问题的电脑执行相同的操作,得到类似的信息,对比信息,可以知道大概是确实啥库导致的,这里缺少的是 MSVCP140.dll。还有一种情况是dll库都在,但是加载dll库报错,也可以通过加载的dll 顺序看出来。在开发环境下,运行windbg,打开执行文件,按F5 让程序跑起来。会看到正常情况下dll加载信息,这些就是正常运行需要用到的dll。...
2022-08-26 18:02:26
697
原创 Crypto-JS 解密失败 Uncaught Error: Malformed UTF-8 data
java 加密js 解密,报错 Uncaught Error: Malformed UTF-8 datajs 端原因是字符串有换行符,Base64 生成出现换行,改为NO_WRAP
2022-06-16 16:48:45
4760
原创 js websocket onClose 回调问题
1、websocket 调用close 方法后,onclose 事件不会马上触发,大概10S 左右才会触发,有时主动调用close 方法 后就不需要触发onclose 事件,可以设置onclose 事件为undefined。或者如果用 addEventListener 注册的事件,可以使用removeEventListener 移除相关事件。2、怎么判断onclose 事件是哪个websocket 触发的,可以在onclose 里面拿到currentTarget 对象进行比较。 至于onclos
2022-06-10 09:56:06
4342
原创 js 实现sps 解析获取视频分辨率
function ceil(val){ return Math.ceil(val);}//获取buf 的前n个bit组成的值function u(bitCount, buf){ var ret = 0; for( var i = 0;i< bitCount;i++) { ret <<= 1; if (buf[Math.floor(startBitIndex / 8)] & (0x80 >> (startBitIndex %..
2022-03-24 09:43:00
1306
原创 webrtc android 编译报错整理
1、UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 685: ordinal not in range(128)Traceback (most recent call last): File "/usr/lib/python3.6/multiprocessing/pool.py", line 120, in worker result = (True, func(*args, **kwds)) F
2022-02-19 17:01:41
1657
原创 MSE H265 支持调查
MSE api 经常用于浏览器视频播放中,一般用来将H264 等编码的视频打包成fmp4,然后喂给video 标签实现流媒体播放。于是猜想既然video 标签能直接支持播放的,MSE 理论上也能进行流式播放,那么H265 编码的视频流是不是也能通过MSE 播放呢?答案是肯定的!但悲催的是chrome 浏览器等不支持H265 编码,国内支持H.265 的浏览器只有360 安全/极速浏览器 桌面端,QQ/微信 手机端内置浏览器 ,也就是说小程序好歹是用的。以下是我的测试代码(摘抄自MDN ,需要起一个htt
2021-11-30 15:28:07
2103
原创 C++ websocket 使用体验
websocket 是一个基于tcp的应用层协议,在网页端开发经常会用到。一开始我以为websocket库也像C#、java、javascript 那样,几句话搞定。using System;using WebSocketSharp;namespace Example{ public class Program { public static void Main (string[] args) { using (var ws = new WebSo...
2021-11-30 14:52:39
1030
原创 VSCode C/C++ 多文件远程开发 -- gdb
vscode 是一个开的文本编辑器,通过插件可以编写、调试程序,用于Linux 远程开发非常方便,再也不用1、基本常识launch.jsonlunch.json 用于配置vscode 如何调试程序tasks.json指示 vscode 如何编译源码,获得生成文件c_cpp_properties.json这文件影响 C/C++ 插件的智能提示,不影响编译,可加可不加。2、文件配置launch.json{ // 使用 IntelliSense 了解相关属.
2021-10-28 21:46:17
507
原创 WebRTC 报错:Failed to set remote offer sdp: Called with SDP without DTLS fingerprint
这是android app端和网页端建立sdp 的时候触发的,意思是在sdp 找不到dtls 相关内容,解决办法就是更新webrtc 库,设置 enableDtlsSrtp = true rtcConfig.enableDtlsSrtp = true; mPeerConnection = mFactory.createPeerConnection(rtcConfig, pcConstraints, mPcObserver);至于网上说一些答案说createoffer 里设置DtlsSrtp.
2021-08-16 11:03:44
2191
1
原创 Webassembly 学习3 -- 打造web端的aac 播放器
1、引言 aac 是很常见的音频格式,压缩率比mp3 还高,H5 支持从audio 标签文件读取aac 文件并播放,但不支持从网络流中直接读取。这里借助webassembly 技术,将aac 转码成pcm码流,再借助web audio api 实现aac音频播放。主要用到的开源库有faad、pcm-player 2、编译 进入faad 官网,http://www.linuxfromscratch.org/blfs/view/svn/multimedia/faa...
2021-07-04 14:59:04
1760
2
原创 davfs & nextclound 创建文件出现invalid argument
有同事反映,davfs 挂载nextcloud webdav网盘后,无法进行文件读写。我用坚果云试了一遍,读写操作正常,换到nextcloud,就无法创建文件,并提示无效参数,是只好看源码定位。 修改/etc/davfs2/davfs2.conf 文件,添加字段debug most,表明尽可能记录日志信息,日志文件...
2021-05-09 15:28:01
2902
原创 Webassembly 学习2 -- Js 与C 数据交互
1、简单的C/C++ 编写 我们可以将C代码 编译成wasm 文件供js 调用,C文件的写法和我们普通的C写法并没有太大区别,不需要太多的封装,连main 入口都可以丢弃。例如C实现一个简单的加法计算#include <stdio.h>int add(int a, int b){ int sum = a + b; printf("计算结果 %d\n", sum); return sum;} 编写脚本,编译C 文件成wa...
2021-04-14 17:30:52
1301
原创 davfs 移植到android 踩坑之旅
1、Davfs 简介 Davfs 是一个支持webdav 协议的库,可以等支持webdav 协议的挂载到本地文件系统,
2021-04-06 13:49:12
1832
原创 记一次webrtc Core audio崩溃的bug
网上随便下了一个webrtc window 版的例子,前段时间运行的好好的,不知系统改了啥,一运行就崩溃了,报错长这样崩溃报错 直接就死在初始化工厂那里,日志信息如下,百度、google 搜了一遍全部也没有找到解决办法webrtc_video_engine.cc:473): WebRtcVideoEngine::WebRtcVideoEngine()(webrtc_voice_engine.cc:196): WebRtcVoiceEngine::WebRtcVoiceEngine(w...
2021-02-20 18:13:23
1777
原创 安利一个window api 返回值查询网站
window 开发中,常常遇到各种各样奇奇怪怪的返回值,比如d3d,系统api 等,window 中称为hresult。安利一个网站,可以快速定位返回值含义,地址:https://www.hresult.info/ 使用方法很简单,直接输入错误码查找。 ...
2021-02-19 15:04:15
182
原创 Webassembly 学习1 -- 环境搭建
最近一直在捣鼓webassembly 的东西,趁着还有个印象,赶紧记下来。 老规矩,上官网,https://emscripten.org/,按照官网教程一步步来(强烈建议挂梯子)。git clone https://github.com/emscripten-core/emsdk.git# Enter that directorycd emsdkFetch the latest version of the emsdk (not needed the first time ...
2021-01-07 16:41:00
368
原创 jmuxer.js 之二 -- 简单使用
1、参数配置jmuxer 实例化时,有以下参数node:mode:flushingtime:clearBuffer:是否自动清除bufferfps:
2020-11-25 21:34:12
5492
原创 jmuxer.js 之一 -- 环境搭建及demo测试
最近在捣鼓web端的音视频,有这么一个需求,web端需要显示流媒体,性能不能太差,而且协议是私有协议,性能不能太差,方案试了一圈,最终可能符合的方案的只有mse 和wasm。这里先不对wasm 进行讨论,主要是讲mse。mse 全称是Media Source Extensions,...
2020-10-21 17:16:41
2945
原创 在DLL 中输出调试信息
在C++ dll 中使用printf输出调试信息,可能会出现输出信息不及时的问题(尤其是在C#项目中),可以使用OutputDebugString 函数代替。这里为了方便,将OutputDebugString封装成一个函数,顺便支持不定长参数和时间打印,便于使用。#include <windows.h>#include <stdio.h>#include <stdarg.h>void ShowDbgInfo(const char* data, ...)..
2020-09-03 16:55:01
5039
1
原创 VS2017 编译Windows下可用的librtmp 库
librtmp 是开源项目rtmpdump的一个子模块,官网:http://rtmpdump.mplayerhq.hu/,librtmp库封装了rtmp协议,可以用于rtmp推流/拉流,编译rtmpdump 需要用到openssl,zlib第三方库,下面分步骤介绍。1、获取源码可以直接从官网页面的git库获取,也可以在http://rtmpdump.mplayerhq.hu/download/下载,选择最新的rtmpdump-2.3.tgz,下载并解压。带有windows的是已经编译好的,包里面..
2020-08-19 09:50:34
862
原创 wpf D3DImage 偶现性无法渲染图像,D3D设备丢失的解决办法
最近碰到这样的现象,在一些笔记本上使用D3DImage控件渲染时,会有一定几率无法显示图形。图形显示流程大概是C++ 创建Surface,渲染好后传递指针给D3DImage显示。查了一遍C++层,返回值都是对的,连个错误码都没有,而且C++写的渲染Demo在同样的环境下可以正常运行。 然后就怀疑C# 层渲染出了问题,果不其然D3DImage的一个属性IsFrontBufferAvailable为false了,MSDN说该属性偶尔可能为 false,为false的时候D3DImage是无法
2020-07-23 17:28:51
2061
原创 OpenTK 学习资料分享
OpenTK是opengl的C# 封装,网上例子真是少的可怜,不过官网github给了挺多例子,https://github.com/opentk/LearnOpenTK,建议和https://learnopengl-cn.github.io/(需要科学上网)对照着看。官网给的例子clone下来后,每个项目右击点击属性,在应用程序-目标框架中选择 net4.7.1,重新编译就可以运行。运行如下...
2020-07-03 09:42:13
1572
原创 Wpf KeyDown事件捕捉出现ImeProcessed的解决办法
WPF中使用键盘事件KeyDown获取键值的时候,如果输入法状态为中文,获得的值是ImeProcessed,查了下MSDN,意思是这个事件被输入法处理了,这样就获取不到正确的键值,每次都要切换成英文很烦人!据我说知,解决办法有2种(1) 最简单的,在控件上禁用输入法(2)使用键盘钩子,获取按下按键的键值。参考链接:https://www.cnblogs.com/lonelyxmas/p/7681685.html...
2020-06-28 09:37:45
2303
原创 Windows 下内存泄露定位之CrtDumpMemoryLeak
看过很多windows下关于CrtDumpMemoryLeaks的文章,很多照着做,还是定位不到具体哪一行泄露的,这里总结一下,方便大家排查。1、宏替换#define _CRTDBG_MAP_ALLOC#include <stdlib.h>#include <crtdbg.h>#ifdef _DEBUG #define new new(_NORMAL_BLOCK, __FILE__, __LINE__)#endif在头文件上,加上一下代码,替换掉...
2020-06-07 14:10:27
857
原创 OpenFec 基本使用
OpenFec(官网:http://www.openfec.org/)是一个项目,主要处理正向纠错码,在通信中加上一些冗余数据,在网络质量差、丢包的时候,可以根据这些冗余数据恢复出原来的数据。目前OpenFec项目支持以下编码:(1) Reed-Solomon over GF(28)(2) Reed-Solomon stable codec over GF(2m)(3) ...
2020-04-26 10:40:18
3951
原创 反编译工具.NET Reactor 简明教程
.NET Reactor 简介.NET Reactor 是针对.NET Framework编写的软件的功能强大的代码保护和软件许可系统,并支持生成.NET程序集的所有语言,.NET Reactor支持对C#、VB等语言生成的dll、exe等进行加固和混淆。为什么要进行加固wpf、winform等框架生成的执行文件是可以被ILSPY等软件反编译的,只要将exe文件拖到ILSPY,源...
2020-03-29 14:39:08
4242
原创 LNK1181 无法打开输入文件“winmm.lib”
在属性-> VC++目录->引用目录 插入$(LibraryPath),真实路径在E:\Windows Kits\10\Lib\10.0.17134.0\um\x86,SDK是10.0.17134.0,重新编译通过。
2020-01-16 22:56:29
2292
原创 WPF 视频流渲染优化思路及经验总结
回顾我在wpf上渲染视频流的历程,可以分为三个阶段:以下方案都是在ffmpeg中解码后,回调到WPF中进行渲染1、使用WPF嵌套winform控件,在winform控件上使用GDI渲染RGB数据,这个方案拖动窗口会有严重的闪烁问题,无解。2、使用WriteableBitmap,将一个Image控件的Sourece指定为WriteableBitmap,在C++中回调C#,通过Marsh...
2020-01-14 18:53:19
2283
2
原创 Intel qsv + ffmpeg 硬解h264
Quick Sync Video,简称qsv,是英特尔推出的集成加速接口,使用该接口可以硬解h264,提高解码效率的同时降低CPU占用率,ffmpeg 4.4.2中 doc\example中有一个qsvdec.c的demo,我在此基础上进行修改,实现了硬解h264。 环境准备 下载安装Intel Media Mdk,https://software.intel.com/en-us...
2020-01-13 09:49:27
7103
8
原创 C# mailto方式发送邮件乱码
原先的代码大概如下: private void SendMail(string mailAddress, string topics) { string message = string.Format("mailto:{0}?subject={1}", mailAddress, topics); System.Diagnosti...
2019-08-12 15:22:47
848
原创 WPF事件没有触发的原因分析
最近刚接触WPF,经常发现控件关联的事件没有触发,网上查了一下资料,大概有以下几个原因:1、某些控件需要获取焦点,才能捕捉到该事件 比如KeyDown事件,如果是Grid等布局类控件,触发KeyDown事件的前提是该控件获得焦点,需要在Xaml上添加Fo <Grid x:Name="gridRoot" Focusable="True" MouseDown="GridRoot...
2019-05-30 17:27:58
2717
原创 CSkin界面库窗体设置
CSkin界面库是一款免费的C#界面库,具有小巧免费,拓展性强,容易上手等优点,适合用于中小规模软件的开发。使用这个界面一年多了,但一般最多也只是改改颜色之类的简单应用,官网也只给了简单的例子,并没有说明文档,大部分都得靠自己摸索和实践,于是想简单介绍一下这个界面库。 从官网http://www.cskin.net/下载界面库,解压有两个dll文件,一个是dll文件,一个是net...
2019-01-16 16:13:46
8531
7
原创 WinForm DataGridView加快CheckBox勾选速度
工作中经常需要用到DataGridView显示数据,需要在DataGridView中用到CheckBox,我的添加ChexkBox方法比较简单,代码如下: DataTable table = new DataTable(); table.Columns.Add("choice", typeof(bool)); table.Columns.Add("id")...
2018-08-22 17:24:51
1586
2
原创 C#导出excel引发COMException (0x80040154)异常
最近在维护一个测试软件,导出excel时发生System.Runtime.InteropServices.COMException (0x80040154)异常,判断应该是COM调用出现问题。尝试了以下两种方法:(1)使用regsvr32 dll路径 命令注册组件,弹出找不到入口点 DllRegisterServer点错误对话框,失败。(2)安装WPS,问题解决,异常也没有弹出。结论:如果程序调...
2018-04-12 15:59:18
2934
ffmpeg音视频同步Demo
2018-10-30
Duilib界面设计软件DuiDesigner
2017-12-29
CommMonitor7.0串口调试软件
2017-09-22
安卓TCP/UDP网络调试软件
2017-08-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人