- 博客(25)
- 资源 (11)
- 收藏
- 关注
原创 EasyDarwin 增加restful接口返回值
因为在工作需要的时候发现EasyDarwin ,现有resful接口上缺少回复信息,因此需要自己加上创建源的状态回复。于是准备加上该功能,方便业务服务器进行管理和异常处理。 http 请求在 HTTPSession::ExecNetMsgEasyUDPModuleReq 中处理http的请求 在自定义模块上添加如下代码 if(clientSesRef != NUL
2017-02-22 18:10:39 879
原创 解决ffmpeg 重采样中的bug。
最近公司的项目需要对ts流进行监控,于是我使用了ffmpeg的解码部分和音频重采样部分。具体流程 ts流复合流---->解复用模块--->按照PID demux --->ffmpeg接收--->解码--->通过PCM数据计算音量--->选择一路监听。实现过程比较简单,这里就不具体展开了,具体参考雷博士 解码部分。由于要实现音频监听功能,而且需要多路切换,因为ts流里面的音频流在解码之后
2017-01-21 23:07:37 2365
原创 使用VS2015添加对ffmpeg添加h265 支持。
最近有人问我hls 是否支持h265,经过一番查找资料应该是不支持的。但是有人却不依不饶的问是否vlc 支持hls 支持h265,于是我想测试一番,翻出原来的推流代码,把 pCodecOut = avcodec_find_encoder(AV_CODEC_ID_H264);这句代码改成 pCodecOut = avcodec_find_encoder(AV_CODEC_ID_H265);,经
2016-12-18 23:23:52 5683
原创 基于ffmpeg,实现采集屏幕或摄像头以后向EasyDarwin推流
近期看了一些关于ffmpeg 推流的文章,但是文章中都是基于ffmpeg命令行实现的,觉得不是很灵活,不好和easydarwin 集成到一起工作。于是自己基于ffmpeg 的lib 实现了,采集,编码,推流的过程 ffmpeg 可以支持多种方式的采集,如windows 下的dshow,采集桌面的 gdigrab,linux下有video4linux2 等方式采集。我在windows 下实
2016-12-07 19:55:14 6955 1
原创 调试EasyDarwin开源项目EasyCamera-HK接入海康IPCamera 摄像机所遇到的大坑
最近有幸跟着Babosa大神学习EasyDarwin相关的知识,在社区各位大牛的帮助下安装了git,从github 上拉下了代码,开始编译。编译了一个一个的工程都很正常,由于我手头只有一个海康的摄像头,因此我编译了EasyCamera-HK,但是vs给报了20个错误。如图 其中的一处错误:如上图看了这几点错误,觉得特别纳闷,按理说这不应该有错误啊。if 和els
2016-11-14 23:04:45 6043 6
原创 EasyDarwin Rtsp流转发(三)
前面看了数据流的接入部分,接下来看数据的发送部分Easydrawin 在另外的一个线程中执行发送数据的任务。SInt64 ReflectorSocket::Run()中获取相应的读事件以后 if (theEvents & Task::kReadEvent) this->GetIncomingData(theMilliseconds); 拿到要发送的数据以后,调用
2016-07-17 23:06:09 1222
原创 EasyDarwin Rtsp流转发(二)
出差一周~接第一篇: 在 QTSSCallbacks::QTSS_ReflectRTPTrackData 中: for (; fCurrentModule { QTSSModule* theModule = QTSServerInterface::GetModule(QTSSModule::kRTSPRelayingDataRole, fCurrentModule);
2016-07-17 22:30:48 1263
原创 EasyDarwin Rtsp流转发(一)
EasyDarwin 使用live555作为rtsp客户端去源地址获取音视频数据。在Rtsp 客户端: class EasyRelaySink: 继承 MediaSink 实现了一个类。在这个类中重写void EasyRelaySink::afterGettingFrame(unsigned frameSize, unsigned numTruncatedBytes,struct t
2016-07-03 21:39:40 1494
原创 VC 编码规范笔记
1、头文件依赖(Forward Declarations) 2、函数的参数顺序(Function Parameter Ordering)3、CPP文件包含头文件的顺序4、类的拷贝构造函数5、结构体和类6、操作符重载7、将类的成员私有化8、类中的申明顺序9、编写短小的函数10、输入的引用参数需要添加上const11、不使用函数重载,直接利用函数名称进行区分
2013-03-07 23:13:58 541
原创 C++ new delete的问题
本人在使用TAB 控件时,需要几个对话框,用于不同页面功能的切换,一开始的做法:CDialog * dlg[3]=new CDialog[3]; dlg[0]->Create(IDD_AUTORUN); rect.left=rect1.left; rect.bottom=rect1.top; dlg[0]->MoveWindow(&rect); dlg[
2013-03-01 10:59:04 374
原创 非模态窗口模拟模态窗口
MFC的的模态窗口使用很方便,只需要 CXXX wnd; wnd.DoModal() 就可以了当窗口存在时,不能对操作父窗口进行任何操作,程序进入DoModal()函数中直到子窗口被关闭才返回这样我在实际运用的时候就遇到一个问题。问题情景客户端 ----》socket ---》解析协议----》sendmessage 到界面进行对应操作。1、有个对客户端的参数调试界面,只有当
2013-02-27 17:05:59 557
原创 CWnd 直接创建窗口之教训
我想直接从CWnd派生一个类,做自定义控件于是 我写了测试代码但是 窗口风格我没有指定,( DWORD dwStyle=1)以前的工程 如果我创建新窗口,窗口风格在资源文件里面已经定义了,因此没有任何问题,但是现在我并没有在资源文件里面指定窗口风格,因此创建窗口肯定失败,经过参考如下代码,创建正常。 RECT rect = {0, 0, 200,200}; cksb.Cr
2013-02-26 15:56:32 2649
转载 VC++ CDC::Arc 汉化参数明说及举例
BOOL Arc( int x1, inty1, int x2, int y2, intx3, int y3, int x4, inty4 );BOOL Arc( LPCRECT lpRect, POINT ptStart, POINT ptEnd );x1为有效矩形左上角X坐标点.y1为有效矩形左上角y坐标点.x2为有效矩形右下角x坐标点.y2为有效矩形右下角y坐标点.
2012-08-30 23:40:44 5506
原创 NTP 客户端代码 服务端openwrt 的ntpd
#define TIMEDIFF (0x83aa7e80) //2209075200LU #define NTP_HEAD_LEN 48typedef struct { int L1; int Version; int mode; char stratum; char poll; char precision; unsigned long root_del
2012-08-27 22:44:05 5528 1
原创 设置网卡混杂模式
关键API :ioctlsocket() 设置杂收模式 宏 #define SIO_RCVALL (0x80000000 | (0x18000000) | (1))IP头:typedef struct _IPHeader { //IP数据包头 BYTE Ver_HLen; //版本+报头长度 BYTE TOS;
2012-08-24 22:48:36 5155 1
原创 枚举网络协议
关键API:WSAEnumProtocols关键结构体:LPWSAPROTOCOL_INFO#include "TestEnumProtocor.h"int main(){ WSADATA wsadata; LPWSAPROTOCOL_INFO lpProtocolInfo; DWORD dword=0; int nTotalProtocols; int
2012-08-22 23:33:44 618
原创 lesson4
window下的四大锁 (1)临界区 临界区是最简单的一种锁。基本的临界区操作有:InitializeCriticalSection EnterCriticalSection LeaveCriticalSection DeleteCriticalSection 使用时候 主要是保护 EnterCriticalSection 和LeaveCritiSect
2012-08-04 22:59:59 350
转载 lesson3
自旋锁还是不理解static inlinevoid __raw_spin_lock(raw_spinlock_t *lock) { asm volatile("\n1:\t" LOCK_PREFIX " ; decb %0\n\t" "jns 3f\n"
2012-08-04 20:46:52 457
原创 lesson3
线程间数据的互斥访问。(1)关中断(特权指令,不可行)(2)数学互斥方法(是Peterson算法)(3)操作系统提供的互斥方法(临界区、互斥量、信号量) cli是关中断,sti是开中断。(4)cpu原子操作(如下API)。InterLockedAdd InterLockedExchange InterLockedCompareExchange
2012-07-26 07:55:40 325
原创 lesson2
1、多线程在VC上面编译的时候,需要打开/MD开关。具体操作为,【project】->【setting】->【c/c++】->Category【Code Generation】->【Use run-time library】->【Debug Multithreaded】即可2、线程可以在任何地方 任何地点被调度
2012-07-24 23:17:24 253
原创 lesson 1
1、进程是计算机分配资源的主体。(系统中资源的分配都是按照pid进行处理)2、theard 是CPU调度的最小单元。3、使用线程好处(1、进程下的数据共享,2、方便线程间通信,3、在进程内实现多任务)4进程间 数据不共享,通信需要系统调用。多线程好点 :1)有的是为了提高运行的速度,比如多核cpu下的多线程 2)有的是为了提高资源的利用率,比如在网络环境下下载资
2012-07-24 00:12:17 286
转载 函数指针与指针函数
1.指针函数的定义顾名思义,指针函数即返回指针的函数。其一般定义形式如下:类型名 *函数名(函数参数表列);其中,后缀运算符括号“()”表示这是一个函数,其前缀运算符星号“*”表示此函数为指针型函数,其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个“指向返回值为…的指针(地址),“类型名”表示函数返回的指针指向的类型”。“(函数参数表列)”中的括号为函数调用
2012-07-15 07:48:19 389
原创 对话
秦大哥(1093378905) 23:33:05沉思录讲得深吗,全面吗阿楠(360462870) 23:33:30两本书 (__少(26062281) 23:33:36我没看过Singor(416911401) 23:34:16其实C++ Prime看懂就已经够了秦大哥(1093378905) 23:34:50要多练习,光看不够(__少(26062
2012-06-07 23:39:20 406
原创 iErrorCode[FD_CLOSE_BIT]==10053 错误
else if(netEvents.iErrorCode[FD_CLOSE_BIT]==10053)//客户端非法关闭 { ::WSACloseEvent(objtemp.sEvent); ptr->PeerShutDownSocket(objtemp.s); } 杭州-(__少(26062281) 14:11:47 #先说
2012-04-25 14:38:29 2205
原创 对话 存储
武汉-泡泡鱼(271461253) 16:43:56http://www.codeproject.com/Articles/32169/FDump-Dumping-File-Sectors-Directly-from-Disk-usinhttp://search.codesoso.com/Search?q=ntfs+read+mft+source+code&start=21杭州 -(
2012-04-19 16:49:48 480
GDI用户手册
2012-02-16
信号发生器 多种波形电路 c51 单片机
2009-08-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人