MFC中针对WebBrowser控件增加link链接点击事件监控

本文参考互联网资源:http://www.scottdstrader.com/blog/ether_archives/000040.html
http://download.csdn.net/download/xiemg/3640190
前言:
本文是基于MFC对话框工程加入WebBrowser控件的实现,不是DHTMLView等的实现。目标是监控当前打开页面中的link超链接点击监控,并拦截事件做自定义处理。目的是把http链接转换成rtsp链接,然后本地播放该链接。

1. 主对话框头文件PlayerDlg.h:
1.1 增加头文件引用

#include <comdef.h>
#include <mshtml.h>
#include <mshtmdid.h>
#include <map>
#include <vector>
#include <afxwin.h>
using namespace std;

#pragma warning(disable : 4146) //see Q231931 for explaintation
#import <mshtml.tlb> no_auto_exclude

1.2 增加成员变量,用于保存事件对应的html element元素的指针指针

    vector<IDispatchPtr> m_vElem;
    map<IDispatch*, DWORD> m_mapElem2EventCookie;

1.3. 增加事件相关的MFC宏声明

        DECLARE_DISPATCH_MAP() 
    DECLARE_EVENTSINK_MAP()
    DECLARE_INTERFACE_MAP()

1.4. 增加3个事件处理函数声明

void OnClick(MSHTML::IHTMLEventObj *pEvtObj);//link 点击事件处理函数
afx_msg void OnDocumentComplete(LPDISPATCH pDisp, VARIANT FAR* URL);//html document加载完成时的事件函数
afx_msg void OnBeforeNavigate2(LPDISPATCH pDisp, VARIANT FAR* URL, VARIANT FAR* Flags, VARIANT FAR* TargetFrameName, VARIANT FAR* PostData, VARIANT FAR* Headers, BOOL FAR* Cancel);//跳转到新连接之前的函数,可在此阻止跳转

2. 主对话框源文件PlayerDlg.cpp:
2.1. 增加事件的映射

::CODECO[......]

阅读全文

windows下一分钟配置ngnix实现HLS m3u8点播

1. 下载nginx-1.5.10 for windows

2. 新建子目录:nginx-1.5.10\html\hls,把生成的m3u8和切片好的ts文件或目录拷贝到hls目录下

3. 修改配置文件nginx-1.5.10\conf\mime.types,增加以下三行:
在application/zip zip;这一行后面增加2行:
application/x-mpegURL m3u8;
application/vnd.apple.mpegurl m3u8;

在video/x-msvideo avi;行后,增加1行:
video/MP2T ts;

4. 打开任务管理其,杀掉ngnix.exe,重启ngnix.exe

5. 打开vlc播放器, 【打开网络串流】菜单,输入url:http://192.168.1.100/hls/playlist.[......]

阅读全文

利用ffmepg把ts文件转m3u8并切片

网上很多垃圾文章推荐segmenter工具,但用的时候,3.5G的ts文件丢了一半的数据,于是想到了ffmpeg转。
在国外网站找到命令,一句话搞定,没报半句错:
ffmpeg -i 12生肖.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 10 output%03d.ts

顺便共享给各位国内的同仁,免得深受其苦。毕竟,大家都说HLS代表future,rtsp已经是过去式了。

另外,对于下载windows下的ffmepg二进制版本,请进网站http://ffmpeg.zeranoe.com/builds/win32/shared下载最新版本,无需自己编译。

Live555 + Darwin Streaming Server(DSS)视频直播方案

function writeSpace( num){ var i;
for(i = 0; i < num; ++i)
{ document.write('   ' ); }
}
该方案的实现原理是,通过Live555的DarwinInjector Class,把本地采集的音频和视频流,注入到DSS服务器。客户端就可以直接访问DSS服务器(不是Live555所在的采集端)来访问实时流媒体数据。

这种方案的优点:
》保证了单台DSS服务器并发量可以上几百。
》DSS服务可以像承载点播一样,实现直播。
》支持多路直播,就跟增加一个点播文件一样简单。

缺点:
》延时一般需要5秒左右
》直播集群支持节点受限,一台PC运行Live555采集端可同时注入的DSS服务器数量不超过5台

首先需要修改DSS服务端配置:
这里需要设置一下/usr/local/movies/目录的QTSS访问权限,允许写入:
修改DSS配置,增加文件:vi /usr/local/movies/qtaccess,增加以下几行
require any-user
require any-user

基本原理图如下:
writeSpace(38); /—-【客户端 1 RTSP Client(例如VLC)】

【采集客户端调用Live555 DarwinInjector】 —-> 【DSS 服务器 192.168.1.22】《—–【客户端 2 RTSP Client(例如VLC)】

writeSpace(38); \—-【客户端 N RTSP Client(例如VLC)】

方案的实现流程,用伪代码来说明:
0. 调用live555中已有的类创建Darwin injector对象
DarwinInjector* injector = DarwinInjector::createNew(env, “teset.sdp”);
1. 采集的音频流,编码为AAC格式

2. 把采集到的音频流,加入injector对象(含有rtp和rtcp)
//2.1. 得到音频流AAC的es流
FramedSource *audioSource = demuxSv[......]

阅读全文

为Darwin Streaming Server扩展TS文件格式支持

众所周知,达尔文只支持mp4,3gp,mov等有限几种格式,连国内使用非常广泛的TS文件格式都不支持,实在是一种缺憾。
我跟列位一样,最近一年以来都有心想扩展ts格式,但一直畏惧自己才疏学浅,在鼎鼎大名的达尔文身上动刀子,有种自不量力之感!
网上看过最有用的一篇文章是这位仁兄的:
http://blog.sina.com.cn/s/blog_6a4c492f0100pffv.html

这篇文章很有用,但我发现最有用的还是Darwin Streaming Server源码中的子模块QTSSRTPFileModule,最具有参考意义:DarwinStreamingSrvr6.0.3-Source\APIModules\QTSSRTPFileModule,该模块支持.rtp后缀的文件格式,非常具有参考意义!!!而我们的目的只是增加.ts后缀的文件格式支持。
以下是我的实现步骤:
第一步:全盘拷贝QTSSRTPFileModule目录,然后修改QTSSRTPFileModule为QTSSTSFileModule,把【文件名】和【文件内容】中的”QTSSRTPFile”全部替换为”QTSSTSFile”[......]

阅读全文

linux系统日常经验总结

sed文本替换
替换PJ_DEF(.*)为.*
find pjproject-2.7.2 -name “audiodev.c” \( -exec sed ‘s/PJ_DEF[(]\(.*\)[)]/\1/g’ {} > tmp.c \; -o -exec mv -vf tmp.c {} \; \)

https://blog.csdn.net/ljp1919/article/details/53337670

STL相关的一些文章:
map vs multimap

http://blog.csdn.net/pathuang68/article/details/4248013

set

http://www.cnblogs.com/BeyondAnyTime/archive/2012/08/13/2636375.html

upper_bounder, lower_bounder

http://www.cnblogs.com/cobbliu/archive/2012/05/21/2512249.html

经验1:
前段时间,发现centOs重新启动后,进入不了系统,按CTRL +[......]

阅读全文

转:从100PV到1亿级PV网站架构演变

原文链接 http://www.yejun.cn/?p=1154
发表于 2013年03月30日 由 yejun

一个网站就像一个人,存在一个从小到大的过程。养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有共同的原则。本文结合我自已14年网站人的经历记录一些架构演变中的体会。

1:积累是必不可少的

架构师不是一天练成的。

1999年,我作了一个个人主页,在学校内的虚拟空间,参加了一次主页大赛,几个DREAMWEAVER的页面,几个TABLE作布局,一个DB连接,几行PHP的代码嵌入在HTML中,再用FTP传到服务器上就可以给别人展示一个网站。
2000年,个人主页已经不能满足好奇,在当时的网管中心管起几台机器,作起网线水晶头,用ALL PEOPLE SEEMS TO NEED DATA PROCESS的理论开始认识了7层网络模块(面试技术员工时,经常会问这些网络基础知识的理解)。有了基础理论的武装,我也开始配置各种服务来玩LINUX,AIX和FREEBSD这些系统。面对各种原理不懂的系统,目的只是想尽办法去解决网站需要的各种基础服务。当时搭建了REALS[......]

阅读全文

成功=目标+进取心

人没有目标,就像船行海上没有指南针一样,迷茫而永远达不到目的地。但只有目标是不够的,还要有进取心才行。很多人之所以一辈子碌碌无为,最大的原因就是缺乏进取心。读书的时候不认真,工作的时候消极怠惰,慢慢地你就会对按部就班的生活和贫穷的日子习以为常,麻木地听从现实生活的安排。积极进取的意识慢慢被生活消磨殆尽,对实现愿望、完成目标缺少了动力,最后就会像一座陈旧的机器一样锈迹斑斑。

  什么是进取心?就是主动去做应该做的事情的心态。进取心对一个人的一生极为重要,因为没有了它,对于目标你就不会坚持下去,遇到挫折就会立刻放弃。刚开始建立事业的创业者尤其要有进取心,因为没有它就不会有努力的目标,也就不会有成就事业的动力。进取心代表着追求高远、持久的目标。只有始终相信自己会有一番作为,并积极主动去实行自己计划的人,才有成功的机会。只有不断地超越自己,对经营和管理精益求精的创业者,才能把事业推上巅峰。

  富有进取心、满含希望是达到目标的第一步,若一个人不先有希望,那么他绝对不会计划去完成任何事情,最后必然一事无成。开始运用个人进取精神的最佳时机,就在于一旦决定了个人希望有什么成就之后,立即开始行动。[......]

阅读全文

曾国藩的修身十二法

曾国藩被称为古今立德、立功、立言一完人!非比现今庙堂之上的, 多伪君子,言行不一也。
曾国藩的修身十二法,有的过于严肃,凡夫俗子,能学其一二也算不错了。

1.持身敬肃

  要使衣冠外貌保持整齐,心思神情端正严肃,时时刻刻都要警惕和检查自己的念头或举止是有背离义理之处。平日闲居无事就要安静泰然,保养德性。而一旦投于事务之中则要专心致志、不存杂念。精神状态清澈明朗,就如同旭日东升,光彩照人。
  
  2.静坐养性

  每天要拿出一定时间来静坐养性,反省自己天性中隐现的仁义之心。正襟危坐,凝然镇定,如同宝鼎一般沉稳。

静坐可以练习瑜伽,在思维运转了一天之后,这是不错的休息。如果睡着了又要做梦,大脑再次得不到休息。

  3.早早起床

  天色刚亮就要早早起床,睡醒就不要恋床。

早睡才能早起,敢问电脑一族谁能做到早睡?增加一点自制能力吧,至少在自已独处的时候。

  4.读书专一

  一本书没有读完,不要再看其他书籍,东翻西阅随意读书,对自己的道德学问长进毫无益处。

  5.阅读史书

  曾国藩丙申年购置了一套《二十三史》[......]

阅读全文

棋牌类游戏App|极品堂App|Apple|Android

极品堂App–棋牌类游戏推荐

经典棋牌类App推荐,适合希望玩各类棋牌的朋友

对于iPad用户,请选择HD高清版本安装。可wifi连接后直接登录App Store下载。

对于iPhone用户,请在PC上安装iTunes,从iTunes下载App再同步到您的iPhone。

对于Android用户,请在PC上安装豌豆荚,从豌豆荚下载App再同步到您的Android设备。

App列表

[......]

App名称 描述 Apple Android
单机斗地主 单机斗地主,3人玩扑克牌 请从[App Store]直接搜索安装 豌豆荚下载
围棋GOdroid 围棋,古老而智慧的游戏。 【极致围棋】 豌豆荚下载
中国象棋 中国象棋 【QQ中国象棋】 豌豆荚下载
五子棋大师 一款精致的五子棋游戏。支持人机对弈,人人对弈,蓝牙、Wi-Fi联机对弈。 请从[App Store]直接搜索安装 豌豆荚下载
正宗中国麻将 经典国粹麻将13张 请从[App Store]直接搜索安装 豌豆荚下载

阅读全文