用string存取二进制数据
摘要:STL的string很强大,用起来也感觉很舒服,这段时间在代码中涉及到了用string存取二进制数据的问题,这里记录一下,以供以后参考。首先提一下STL中string的参考资料:http://www.cplusplus.com/reference/string/string/ ,不懂的朋友可以看下。在数据传输中,二进制数据的buffer一般用系统预设的大数组进行存储,而不是STL的string等,比如:const int max_length = 1024 * 1024;unsigned char data[max_length];因为二进制数据中可能会包含0x00(即:'\0'
阅读全文
posted @
2012-09-30 23:20
Mike_Zhang
编辑
用vlc搭建简单的流媒体代理服务器
摘要:这段时间涉及到RTSP代理的问题,感觉VLC做这方面的demo比较好,这里总结下,也方便我以后查阅。环境:DarwinStreamingServer 6.0.3 + VLC 2.0.3我之前的一篇文章(http://www.cnblogs.com/MikeZhang/archive/2012/09/09/vlcStreamingServer20120909.html )中介绍过怎样用vlc搭建简单流媒体服务器,其实这里也只是把sample1.avi替换成rtsp链接罢了,本文中只以RSTP的方式示例。界面操作方式这里主要介绍下服务器的搭建,客户端就不介绍了,不懂的朋友参考我这篇文章:http:
阅读全文
posted @
2012-09-24 00:19
Mike_Zhang
编辑
字符串替换(C++)
摘要:用过python的朋友应该知道,python的string中有个replace函数,其功能是实现字符串的替换,默认情况下是替换所有,如果加入参数的话会根据设定的个数进行替换,比如下面的例子:>>> import string>>> str1 = "ab1ab2ab3ab4">>> print string.replace(str1,"ab","cd")cd1cd2cd3cd4>>> print string.replace(str1,"ab",
阅读全文
posted @
2012-09-22 22:44
Mike_Zhang
编辑
RTSP流媒体数据传输的两种方式(TCP和UDP)
摘要:通常情况下rtsp协议中数据传输的实现是UDP,因工作需要,想让rtsp的数据传输部分用TCP实现。DarwinStreamingServer服务器能自适应客户端发起的数据传输请求是用TCP方式,还是用UDP方式,这里唯一需要解决的是客户端协议的发起问题,而vlc支持RTSP over TCP的方式。剩下的问题就好办了,让vlc以TCP的方式发起连接即可。DSS的安装配置我就不介绍了,不懂的朋友网上查下。方式一:TCP传输媒体数据我之前的文章(http://www.cnblogs.com/MikeZhang/archive/2012/09/09/vlcStreamingServer201209
阅读全文
posted @
2012-09-16 23:05
Mike_Zhang
编辑
神马16核的服务器你让我单线程跑ffmpeg
摘要:周末了,也该把上周工作中用到的雕虫小技整理下,写成博客,也方便我以后查阅。最近需要用ffmpeg进行视频转码,考虑到ffmpeg这个工具本身支持多线程,而服务器也是多核的,想最大程度发挥服务器的计算能力。显然不能用单线程了,但是线程并不是越多越好,需要找到个平衡点。这就需要用time命令进行计时,并将该屏幕的输出重定向到文件,以便后期进行分析。ffmpeg编码的介绍网上有很多,我这里也有些示例(http://www.cnblogs.com/MikeZhang/archive/2012/07/17/videoCodec.html 中的“三、视频编码工具 ”中有介绍)。今天主要介绍下ffmpeg的
阅读全文
posted @
2012-09-16 11:30
Mike_Zhang
编辑
用vlc搭建简单流媒体服务器(UDP和TCP方式)
摘要:这段时间用到了流媒体数据传输的TCP和UDP方式,感觉vlc可以做这方面的demo,这里总结下,也方便我以后查阅。 简介 VLC主页:http://www.videolan.org VLC不仅仅是个播放器,也可以作为流媒体服务器使用。这个网上有相关的资料,我就不多说了。 声明下本文用的VLC版本:2
阅读全文
posted @
2012-09-09 12:17
Mike_Zhang
编辑
命令行参数解析
摘要:linux下写服务端程序免不了用到命令行参数,这里我总结下C语言、bash脚本、python和go语言中的使用方法,也方便我以后查阅。这里我主要用的是getopt这个函数,首先看看c语言中的定义。头文件:#include<unistd.h>函数定义:int getopt(int argc,char * const argv[ ],const char * optstring); extern char *optarg; extern int optind, opterr, optopt;说明: getopt函数是用来分析命令行参数的,参数argc和argv是由main()传递的参数
阅读全文
posted @
2012-09-07 00:45
Mike_Zhang
编辑
CentOS6安装openvpn( 路由模式证书认证)
摘要:服务器端配置1、安装openvpnrpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpmyum install openvpn -y当然也可以从这个页面下载:http://openvpn.net/index.php/download.html 2、配置服务器2.1 初始化服务端cd /etc/openvpn/cp /usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf .mkdir -p easy
阅读全文
posted @
2012-09-03 23:33
Mike_Zhang
编辑