- 博客(12)
- 资源 (4)
- 收藏
- 关注
转载 NAT穿透原理
nat穿透原理 一直以来,说起NAT穿透,很多人都会被告知使用UDP打孔这个技术,基本上没有人会告诉你如何使用TCP协议去穿透(甚至有的人会直接告诉你TCP协议是无法实现穿透的)。但是,众所周知的是,UDP是一个无连接的数据报协议,使用它就必须自己维护收发数据包的完整性,这常常会大大增加程序的复杂度,而且一些程序由于某些原因,必须使用TCP协议,这样就常常令一些开发TCP网络程序的
2017-03-23 09:54:23 552
转载 音视频聊天开发: 7 Android下ffmpeg+x264编译
Android下视频的采集和播放直接调用sdk就行了,只是编解码麻烦一些,这里采用NDK编译ffmpeg然后通过JNI接口调用。 Android开发是麻烦了一点,不过手机倒是卖的很多,好在底层还要用的是Linux, 可以使用c/c++开源项目,比如 ffmpeg, vlc等拿上来用。否则直接就是WP7下场。再说android编译ffmpeg,随便一搜有很多文章,不过转载者不知道自己测
2017-03-21 14:29:50 703
转载 音视频聊天开发: 6 简单的stun server
说是stun server,其实只是用了一下名字,和开源的stun server不是一回事,这里还加了一些其他功能。功能: 1 用户通过客户端登录上来,返回它的公网IP和端口。2 为了开发方便,同时记录下客户端的公网IP端口,以及它提交上来的本地IP和端口,以供查询。(这部分功能正常来讲应该单独做成一个服务,比如IM Server)3 用户查询其他用户的公网IP和内网IP(用户拿到
2017-03-21 14:29:12 1878
转载 音视频聊天开发: 5 UDP发送视频数据的分包和重组
这里主要用UDP来发送视频,当发送的数据大于1500时分包发送,保证每包小于1500.发送好办,分割后循环发就可以了,关键是接收时的处理。先做一下处理的方法 :发送时每包上面加上标识,比如RTP的做法是加时间戳,SSRC,媒体类型还有结束标识。简单参考一下,我们也加上一些标识(直接拿RTP头也可以, 不过我们的目标是更简洁一些)。另外,我们的目的和RTP稍有不同,UDP库当时设计是传输
2017-03-21 14:28:46 1383
转载 音视频聊天开发: 4 UDP封装后的调用
上文提到的UDPSocket,只是一个简单的socket封装,被动地调用。本文仿照MFC的CAsyncSocket方式做一个包装调用,不过事件响应采用select,不用MFC的窗口消息。 简单接口如下:typedef void (*udp_data_cb)(int sockid, char *data, int len, int ip, int port, int times
2017-03-21 14:28:14 443
转载 音视频聊天开发: 3 UDP的简单封装
视频的采集显示以及编码解码都实现了,下一步就要考虑把数据发出去,由其他客户端播放(设计是先做网络传输,一切都正常后再做音频,虽然叫音视频聊天,其实网络才是最重要的部分)。这里使用UDP进行发送和接收。 考虑到音视频聊天,需要支持iOS,Android等多平台,所以尽可能采用公用方法,下面是简单的一个封装:///////////////////////UDPSock.h:
2017-03-21 14:27:39 1100
转载 音视频聊天开发: 2 视频编解码并显示
前面说到了视频采集和显示,显示使用的是GDI,小画面没问题,如果画面放大变失真比较严重。如果要显示的好的话,可以用dshow内置的预览功能。或者使用d3d,opengl显示。这是以后的工作,当前还是继续实现主要功能。 本文主要以实现视频的编码和解码为主。 参考ffmpeg源码中所带的例子,见:doc\examples\decoding_encoding.c。原
2017-03-21 14:27:03 689
转载 音视频聊天开发: 1 视频采集
一整套音视频聊天项目,一般包括:视频采集-->编码-->传输-->解码-->播放声音采集-->编码-->传输-->解码-->播放传输部分,还分P2P和中转。因为还要加一些指令,实时消息,相当于一个完整的IM再带上语音视频功能。最近整理一些以前做的资料,发现整理成一个完整的项目更有效,否则一堆一堆零散代码沉积下去就成泥沙了。这里以最简单的实现方式,完成一个音视
2017-03-21 14:24:20 697
转载 关于Http协议的get方法和post方法的区别和用法
(一)get方法和post方法简介 查看了MSDN,并且实际写了一番程序,才明白get方法和post方法的不同。其实二者实现的功能相同,都是客户端提交数据库给服务器端,只是实现的机制不同而已。get方法实际上就是通过网页的URL地址实现数据的传送,而服务器端实现从URL地址中解析数据;而post方法则是通过表单的方式提交,数据采取加密方式传送,服务器接到请求后解析数据。从安全角度上看,
2017-03-16 11:52:10 1043
转载 Windows消息机制详解
文章转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/18/90412.html,感谢原作者。消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改
2017-03-14 10:36:23 342
转载 GetDesktopWindow之MFC窗口全屏显示
void CFullScreenDlg::FullScreenView(void){RECT rectDesktop;WINDOWPLACEMENT wpNew;if (!IsFullScreen()){// We'll need these to restore the original state.GetWindowPlacement (&m_wpPrev)
2017-03-14 10:16:45 1557
转载 C语言如何获得精确到毫秒的时间
在做测试或性能优化时,经常要知道程序运行的时间,在Linux系统可以使用time命令来计算程序运行运行所消耗的时间,能精确到毫秒,如果要精确到代码块或某个操作运行时所消耗的时间,time命令就不给力了。如果对时间的精度要求不高的话,可以调用标准C的接口time来得到开始和结束的时间,再调用difftime接口来计算时间差,精度是秒,代码如下所示:下载: time.c#inc
2017-03-13 11:42:53 483
GetLastError
2016-11-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人