libevent 主动发送数据 在其他线程中是无法发送数据的,要打开多线程选项,event_base_new之前调用evthread_use_windows_threads,然后在创建buffevent时加入BEV_OPT_THREADSAFE选项
ffmpeg nonmatching transport in server reply google ONEI looked at the source for ffmpeg to see the relavent lines generating thaterror to try and understand what exactly it might be having problems with,but I do not quite understand what th...
avframe中的linesize与width的关系 linesize是指每一行占多少字节,可能比宽度nwidth要大,它是根据cpu来对齐的,可能是16或32的整数倍,不同的cpu有不同的对齐方式。要通过上面的for循环将yuv数据放到一个bufer中:for (int i=0; i < nheight; i++) { ...
0xc0000005 ntdll.dll 错误 这个问题遇到win10下面没问题,win7下面就报错了,什么ntdll.dll,还有什么delete[] 啥的...........,想了两天时间,把库从debug弄成release,其实主要问题还是char *url;url=(char*)malloc(sizeof(*url_str));strcpy(url,(const char *)url);delete[] url;修...
线程的安全关闭和释放 主要有三种方式:1 返回0 2 通过线程id发送中断消息给该线程 3:waitforobject信号退出参考1 通过线程id发送消息线程返回0进行安全退出VC++工作者线程关闭的问题 主线程和子线程VC++线程的创建和关闭重点:MFC之AfxbeginThread 线程 创建、挂起、释放、结束、退出最近,由于论文的需求,要用到Windows下的多线程。考虑到界面用MF...
uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)"解决办法 如果在编译MFC程序的时候出现下列及类似的错误:1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new.obj) 中定义1>uafxcwd.lib(afxmem.obj) : error LNK...
_beginthreadex 执行失败 日了狗的,有时候断点会进入到线程中,有时候不会,其实thread_h = (HANDLE)_beginthreadex(NULL, 0, open_rtsp_thread, thread_param, 0, NULL); //CloseHandle(thread_h); WaitForMultipleObjects(1, &thread_h, TRUE, INFINI...
mfc 创建窗体的时候进行赋值 DlgPopMain *ptempdlgpopmain; ptempdlgpopmain = new DlgPopMain(ptemid); ptempdlgpopmain->popmainWorkasSer = true; ptempdlgpopmain->DlgPopMainCliIP = this->dlgsermain.DlgSerClientIP...
mfc中的字符串转换 CString 转CStringA 转string 再转 const char*CString str = _("socket");CStringA strA(str.GetBuffer(0));str.ReleaseBuffer();string s = strA.GetBuffer(0);const char* pc = s.c_str();
c# 服务端和多客户端通信 参考例子https://blog.csdn.net/u011602967/article/details/50728443https://blog.csdn.net/Yujie_Yang/article/details/53647258
mfc postmessage 发送 ::PostMessage(this->GetParent()->GetSafeHwnd(), WM_MESSAGE,(WPARAM)DlgSerHostIP.AllocSysString(), (LPARAM)&DlgSerClientIP);接收 CString *pcip=(CString*)lParam; BSTR b = (BSTR)wParam...
mfc 窗口消息传递---popup窗口 总的头文件包含 #define WM_MYMESSAGE WM_USER + 100非弹出窗口mapON_MESSAGE(WM_MYMESSAGE, OnCurTaskChanged)afx_msg LRESULT OnCurTaskChanged(WPARAM wParam, LPARAM lParam);dlgcliplaybtndlg *dlgbtn; dlgb...
mfc 多线程的应用 方式1:.cpp文件..................CWinThread *m_pSerchServerThread;static UINT SerchServerTF(LPVOID pParam);m_pSerchServerThread = AfxBeginThread(SerchServerTF, this);//, THREAD_PRIORITY_NORMAL,0,0...
MFC 子窗口向父窗口触发信息 在MFC中,使用用户自定义消息,子窗口向父窗口发送消息过程、代码:1)在resourse.h中增加定义: //#define WM_add_event_ok (WM_USER + 100) //这种定义方法没有测试,不知道行不行;static UINT WM_add_event_ok = RegisterWindowMessage(_T("User"));//测试过,可行。2)在父...
mfc 基础知识 //更新控件,没有在类中添加变量,在cpp中类的外部添加变量m_pSerchClientsThread = AfxBeginThread((AFX_THREADPROC)SerchClientsTF, this); } serstarting = !serstarting;}UINT SerchClientsTF(LPVOID pParam){ dlgserv...
mfc 基础,文件引用 引用其他文件中的变量 extern IPInfo SearchIPS[7]; 可以直接引用其他.h 和.cpp 中的函数用于线程,用法是声明DWORD WINAPI SearchClients(LPVOID lpParam);
mfc 对话框 键盘消息处理 1、MFC对话框不能响应OnKeyDown和OnChar函数(1)现象 在MFC的对话框中,映射了WM_CHAR 和WM_KEYDOWN 消息后,但是对话框不能响应OnKeyDown和OnChar函数(2)原因 因为MFC在进行设计的时候,这两个消息被对话框上的控件截获了,不能到达这两个消息响应函数,对于OnKeyDown来说,只要把对话框上的控件都删除了,就可以接收到WM...
硬解码后的surface渲染d3d opengl 方式渲染需要将gpu数据copy到内存,然后再存入显存,优化点是数据的拷贝!其实现在觉得最好的方式还是d3d的RTT:https://bbs.csdn.net/topics/290074793如果是需要把渲染的结果当成纹理在别的地方使用的话,可以用“渲染到纹理”技术,把显存中的指定纹理表面作为渲染的目标,渲染的结果会直接保存到那个纹理表面中,不需要进行复制操作,速度非常快...
avformat input context 超时 解决方式:static int interrupt_cb(void *ctx) { AVFormatContext* formatContext = reinterpret_cast<AVFormatContext*>(ctx); //timeout after 5 seconds of no...
关于stride pitch linesize 参考深圳大神著作参考图像pitch总结性写法其实开始的时候怎么保存的数据都是错的,各种扭曲,只有ffmpeg 的avio_write写法是对的,无法理解,大神说用align16去存取数据试试,其实这个主要是涉及到数据对齐。最后的解决方式是通过output_file = fopen("out.rgb", "wb+");将w+改为wb+..................w+以纯文...
vs c++ opengl渲染 #include <glad/glad.h>#include <GLFW/glfw3.h>#include "linmath.h"#include <stdlib.h>#include <stdio.h>static const struct{ float x, y; float r, g, b;} vertices[3...
264结构中一帧有几个片 先贴上链接(x264并行编码设置)(x264参数设置)(ffmpeg中帧级和片级的同步解码)x264有两种并行模式,slice并行和frame并行。slice并行把一帧划分为多个矩形slice,在这多个slice之间并行处理,是一种非延时性的并行模式,多slice会稍微降低编码性能。frame并行是同时开启多帧编码,x264在N个frame并行的时候需要集齐N帧再开始一起编码,因此x264 f...
ffmpeg解码后frame数据存储 方式共有两种,其实存储数据只是为了检测解码后的数据是否正确./* retrieve data from GPU to CPU */ if ((ret = av_hwframe_transfer_data(sw_frame, frame, 0)) < 0) { fprintf(stderr, "Error transferring t...
ffmpeg为AVPacket添加解码头信息 参考学习文档抛弃了原有的api,使用了新的api,为packet添加了spa,pps,便于播放!const AVBitStreamFilter *absFilter = NULL;AVBSFContext *absCtx = NULL;AVCodecParameters *codecpar = NULL;//1. 找到相应解码器的过滤器if(strcasecmp(codecNa...
处理加速解码后视频数据copy的方法 首先是Intel的方式intel 官方文档其次是可以使用intel指令集 sse4再然后可以使用ffmpeg的:void av_image_copy_uc_from ( uint8_t * dst_data[4], const ptrdiff_t dst_linesizes[4], const uint...
live555发送缓存的设置 主要是参考如下几篇文章:increaseSendBufferTo的分析live555: The input frame data was too large for our buffer size基于Live555实现RtspServer及高清高码率视频传输优化live555 rtsp流丢包问题基于live555 RTSP 服务器网络性能优化基于live555实现的RTSP...
vlc 开启debug模式 问题1:main error: ES_OUT_SET_(GROUP_)PCR is called too late (pts_delay increased to 10 ms)main error: Timestamp conversion failed for 1541141514444395: no reference clockmain error: Could not conv...
c程序执行时间 #include “stdio.h” #include “stdlib.h” #include “time.h”clock_t start, finish;double Total_time;/* 测量一个事件持续的时间*/printf( "Time to do %ld empty loops is ", i );start = clock();while( i--) ; f...
有感而发20181023 感觉很累,目前还是在做桌面的局部变化数据获取,昨天还做的好好的,今天在运行程序居然createfile错了,一个字真累。。。来公司三年了,做过c#上位机,做过PPT 插件,做过小段编解码,现在有在做桌面同步,总一个人做,真想爆粗口,真累,刚毕业到现在都这样,总是一个人做一个项目,想离职了,真觉得没意思。。。。。...
指定的文件夹没有包含设备的兼容软件驱动程序...请确认它是为用于基于X64的系统的Windows设计的 装完wdk7600之后,可以使用7600的编译的命令对其提供的src进行编译,wdk10之类装完没有类似的命令。但是编译完成后装在于win7上,都会爆出标题的错误,需要修改inf文件如下:(微软平台选择参考) [Manufacturer]%MfgName%=Mfg0,ntamd64[Mfg0]%TSVC8A%=TvcSys_DDI, PCI\VEN_10b5&DEV...
win10驱动环境搭建 参考(官方文档)(文档1)注意点:注意windows的版本和windows driver kit的版本是否匹配,这点很重要,我搞了一个上午才搞明白没有匹配,还有就是一定注意函数名,很容易写错! 我的开发环境是win10 +vs2017+wdk10,可以开发win7和win10驱动,步骤是最后安装wdk,还有需要注意的就是wdk安装最后有一个关于vs2017的选项,记得一定要选择上,开始...
RTP打包H264 h264的结构如图所示:(参考链接)(重要参考)关于时间戳,需要注意的是h264的采样率为90000HZ,因此时间戳的单位为1(秒)/90000,因此如果当前视频帧率为25fps,那时间戳间隔或者说增量应该为3600,如果帧率为30fps,则增量为3000,以此类推。帧格式H264帧由NALU头和NALU主体组成。NALU头由一个字节组成,它的语法如下: +-------...
初学live555 2(RTP和各种网络协议) 我这边打开live5 server别的电脑打开vlc进行接收数据,发现有时候数据传输是通过tcp,有时候udp,我一直怀疑是不是Live5这边写死了的,其实我猜想是不对的,这个具体方式主要是靠客户端发送的请求链接方式来决定!(参考讲解文档) 各种网络协议介绍 ...
intel media sdk encoder GOP GopOptFlag Intel Media SDK H264 encoder GOP settingGopOptFlag讨论1intel 关于gopoptflag的解释 I帧和IDR帧区别:I帧不是立刻刷新帧,后面的p,b也会参考I帧前面的帧,IDR则不用参考。IDR帧的分布是可以控制的,IdrInterval ,对于H264,IdrInterval指定了IDR帧的间隔,单位为I帧;若IdrInter...
intel编码码率控制 intel 码率控制方法简介(参考链接)各个参数说明链接CQP是比较细化的控制,CQP(恒定质量),主要通过设置QPI, QPB, QPP,固定量化模式并设置使用的量化值,范围0~51,0为无损压缩,默认26!CBR中的一个重要参数就是BufferSizeInKB(较小的BufferSizeInKB表示较小的帧大小变化,也就是最大帧和最小帧之间的大小差值),constant bitra...
socket编程addr_in必须是结构体之类的错误 #include <winsock2.h>#include <Windows.h>winsock2.h的头文件必须位于windows.h的前面,不然会出错,具体啥原因猜测可能是这两个里面都有关于SOCKADDR_IN的定义。...
windows下的socket编程 socket通信分为长连接和短连接,一般而言,频繁的数据交互使用长连接。此外还需加上心跳包,心跳包一般不需要自己写,tcp自身就带这个,只需要做一些必要的设置即可。socket还有进行阻塞和非阻塞模式,前者是一直等待回应,执行之后有返回值,后者是在一定时间内阻塞(时间可设置),超过时间直接进行相关选项的返回值。此外select的模式还分为好几种:参考链接 ...
ffmpeg的qsv的编译 我用mingw和msys2试了下,不知道咋的msys2好像编译总有毛病,后来使用了miingw进行编译,参考链接(参考1),mfx_dispatch网上搜一下地址(mfx下载地址)(github下载地址) 编译此libmfx.pc,首先需要将下载完的源代码放入msys文件夹下面,然后cd到此目录下:感觉有两种方式:1:编译libmfx。 ./config;make;make i...
live推流手机vlc查看 能力差,搞了好久,手机端vlc就是播不出来,因为装了虚拟机,所以出现多个网络地址,live555不知道是不是默认第一个网络地址,总不是我pc联网的那个地址,后来进网络管理,把虚拟机那几个关了,就不会再出现上面的问题,然后还是接收不到流,后来把防火墙关了就可以了,当然直接关防火墙做法不好,其实可以修改防火墙,对那几个应用开放,避免整个关掉这种粗暴做法!...
c程序执行时间计算 #include<clock.h>Clock totalClock;totalClock.Begin();totalClock.End();上面的clock类查看intel抓屏! clock_t start, finish; double cost = 0.0;finish = clock(); cost = (double)(finish ...
windows下安装windows media encoder 其实下载下来的exe文件,双击并不能安装(win10,win7可以),解压这个exe出现msi文件,然后进行安装。这种方法用来截屏的效率比较低(通过安装windows media encoder 9)然后录屏查看的,cpu占用率很高,media foundation 的播放视频cpu占用率却很低,可以实用。...
windows下编译ffmpeg 因为需要根据自己的要求增加功能,所以需要进行编译,整整搞了3天,真的是想爆粗口,贴上一个参考链接吧(参考链接1)(参考链接2)(参考链接3)我知道的编译方法可能有以下几种:1:直接下载mingw然后在安装的时候直接安装msys。然后下载别的yasm.exe添加进去2:msys2加上mingw,这种方式没有尝试3:下载压缩包mingw和msys压缩包,解压后按照1的路径添加我遇到的问题是1: 内存不...
Windows 下编译 OpenSSL 参考目录参考文献简述OpenSSL 是一个开源的第三方库,它实现了 SSL(Secure SocketLayer)和 TLS(Transport Layer Security)协议,被广泛企业应用所采用。对于一般的开发人员而言,在 Win32 OpenSSL 上下载已经编译好的 OpenSSL 库是省力省事的好办法。对于高级的开发用户,可能需要适当的修改或者裁剪 OpenSSL,那么编译它就成为了...
annexb模式 遇到问题转换h264有两种封装,一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中一种是mp4模式,一般mp4 mkv会有,没有startcode,SPS和PPS以及其它信息被封装在container中,每一个frame前面是这个frame的长度很多解码器只支持annexb这种模式,因此需要将mp4做转换:在ffmpeg中用h264_mp4toannexb_filte...
live555windows下编译Lib(20180228版) 编译最新版本的live555的静态库,别的编译lib比较简单,原则就是新建lib工程,可以不选择预编译头。注意点:.cpp和.hh都放在源文件一栏里,不然会无休止的报错,搞了两天才编译成功!附上下载链接https://download.csdn.net/download/qq_32245927/10375271有问题可以给我留言...
h264保存的packet.data数据无法播放,主要是没sps,pps https://blog.csdn.net/leixiaohua1020/article/details/11800877https://blog.csdn.net/qingkongyeyue/article/details/54023323H.264码流第一个 NALU是 SPS(序列参数集Sequence Parameter Set)对应H264标准文档 7.3.2.1 序列参数集的语法进行解...
ffmpeg基本介绍 AVFrame表示解码过后的一个数据帧,这个结构体用来描述解码出音视频数据。AVFrame必须使用av_frame_alloc分配()。AVFrame必须与av_frame_free释放()。AVFrame通常分配一次,然后重复使用多次,不同的数据(如一个AVFrame持有来自解码器的frames。)在再次使用时,av_frame_unref()将自由持有的任何之前的帧引用并重置它变成初始态。AV...
图像序列和GOP IDR: 在H.264中,图像以序列为单位进行组织。一个序列的第一个图像叫做 IDR 图像(立即刷新图像),IDR 图像都是 I 帧图像。H.264 引入 IDR 图像是为了解码的重同步,当解码器解码到 IDR 图像时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。这样,如果前一个序列出现重大错误,在这里可以获得重新同步的机会。IDR图像之后的图像永远不会使...
I帧和IDR帧 推荐:https://blog.csdn.net/qq_29350001/article/details/73770702点击打开链接https://blog.csdn.net/chenchong_219/article/details/44870903https://blog.csdn.net/stpeace/article/details/8191194在H.264中,I帧分为普通I帧和IDR...
ffmpeg码率控制 保存的数据为H264:pCodecCtx->bit_rate=1800000;通常单位为“位每秒”( bit/s, b/s),也写作bps。“b” 应该总是小写,以避免与“字节每秒”(Bytes/s, B/s)混淆。——字节(Byte)是构成信息的单位,在计算机中作为处理数据的基本单位,1字节等于8位,即 1 Byte = 8 bits。1800000/8=225000B/s225000/1...
intel 硬编码错误 1:qsv_h264 submitted buffer not large enough(添加avcodecctx=video_st->codec)2:selected ratecontrol mode is not supported by the QSV runtime.Choose a different mode(虚拟机里面运行会遇到这个问题,别的没用遇到,待解)...
extern "C" “***”未定义,引用出错 extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。#ifdef __cpluspl...
fopen 报错 这种情况肯定是指定的文件不存在,根据偶的经验可能有3种原因:1 检查要打开文件的扩展名,比如在我的电脑里看到的是a.txt,但由于扩展名没显示出来,其实文件名是a.txt.txt2 检查路径串中的转义符,比如文件c:\doc\a.txt,对应的字符串是"c:\\doc\\a.txt"3 检查默认路径,在VC下默认路径是project所在路径,而不是Debug或Release下可执行文件所在的路径。...
c++ 类的使用 https://www.cnblogs.com/mr-wid/archive/2013/02/18/2916309.html引用头文件之后需要using namespce std;不然会引用失败,出现程序无法自动识别该类。
计算1024*768的rgb24图像数据 24位真彩,每个像素占24bit。 1024*768个像素点。所以就是1024*768*24=18874368(bit) 再除以8转换为byte (8bit=1byte) =2359296(byte) 又因为1024byte=1KB 再除以1024等于2304KB 如果再除以1024就是2.25MB了,以此类推如果是256色 就是8bit一个像素 把公式中的24换成8二值图 就是1bit每
获取电脑多屏显示器分辨率 #include "stdafx.h"#includeint _tmain(int argc, _TCHAR* argv[]){ int i; int monitorNum; BOOL flag; DISPLAY_DEVICE dd,dd1; i = 0; flag = true; DEVMODE dm; do