- 博客(52)
- 资源 (11)
- 收藏
- 关注
转载 使用mp4v2将H264+AAC合成mp4文件
录制程序要添加新功能:录制CMMB电视节目,我们的板卡发送出来的是RTP流(H264视频和AAC音频),录制程序要做的工作是:(1)接收并解析RTP包,分离出H264和AAC数据流;(2)将H264视频和AAC音频以某种格式封装,最后存成文件,供用户查看。 第一步已经有部分代码可供参考,因此很快就完成了。第二步,我们决定封装成mp4,查找了一些资料后,决定使
2014-05-28 15:48:11 1726
转载 MP4V2库与MP4AV库编译
最近在开发一个将RTP流存储为MP4文件的功能。其中针对MP4文件读写,用到了两个开源的库。其中MP4V2用于数据的读写,MP4AV用于对其中的数据帧进行分析。 MP4V2和MP4AV都是开源项目MPEG4IP的一部分,当前MPEG4IP已经不再维护。但是MP4V2最为其中的一部分,还有开源组织再进行更新,其项目主页:http://code.google.com/p/mp4
2014-05-28 14:49:50 4237
转载 mpeg4ip的Mp4v2库移植到android系统上,实现h264封装到mp4的容器内
第一步: 首选从官网上下载mpeg4ip源代码,只要其中的lib/mp4v2目录下cpp源文件和.h头文件,和include目录下的mpeg4ip.h和mpeg4ip_version.h头文件。(我下的版本是1.6)。我这里处理了下,把源文件放到src目录下,头文件放到include目录下。 第二步,源文件做少量修改。 1、mpeg4ip.h文件中注释掉 #
2014-05-26 20:27:51 2716
转载 ffmpeg 从mp4上提取H264的nalu
1.获取数据ffmpeg读取mp4中的H264数据,并不能直接得到NALU,文件中也没有储存0x00000001的分隔符。下面这张图为packet.data中的数据从图中可以发现,packet中的数据起始处没有分隔符(0x00000001), 也不是0x65、0x67、0x68、0x41等字节,所以可以肯定这不是标准的nalu。其实,前4个字0x000032ce表示的是na
2014-05-26 20:12:38 545
转载 live555实现ffmpeg解码H264的rtsp流
由于需要实现一个解码H264的rtsp流的web客户端。我首先想到的是live555+ffmpeg。live555用于接收rtsp流,ffmpeg用于解码H264用于显示。看了一下live555发现里面的例子里只有一个openrtsp的例子有点想象,但是那个只是接收rtsp流存在一个文件中。我先尝试写了一个ffmpeg解码H264文件的程序,调试通过。现在只要把live555的例子改一下就可以了,
2014-05-26 20:10:44 1316
转载 live555学习笔记8-RTSPClient分析
八 RTSPClient分析有RTSPServer,当然就要有RTSPClient。如果按照Server端的架构,想一下Client端各部分的组成可能是这样:因为要连接RTSP server,所以RTSPClient要有TCP socket。当获取到server端的DESCRIBE后,应建立一个对应于ServerMediaSession的ClientMediaSession。对应每
2014-05-26 20:09:10 1246
转载 live555中关于mpeg4的处理
live555支持mpeg4的ES(Elemental Stream)流,相关类为MPEGVideoStreamFramer、MPEG4ESVideoRTPSink。我想扩展其对avi格式的支持,将avi中的MPEG4数据包解析出来后,交给MPEGVideoStreamFramer进行处理。后来发现,这样根本不行。问题在于,MPEGVideoStreamFramer处理的是严格的MPEG4 E
2014-05-26 20:06:31 508
转载 live555增强版--支持串流mp4格式
live555目前最新版(0.75)的mediaServer只支持".m4e"格式的Elementary Stream fie,但并不支持串流mp4封装格式的文件,要串流mp4格式的文件一般都是结合FFmpeg进行,但是代码量稍大,这里使用一种较为简单的方法实现对mp4封装格式文件的串流。其具体思路如下图:即我们预先对mp4文件进行处理,解析出各个流,并单独存储它们(解析工
2014-05-26 19:59:29 1180
转载 使用javaMail发送复杂邮件,支持附件发送
avaMail中整个邮件是由一个一个的BodyPart组成的,每一个BoydPart的内容可以是简单的普通文本,或超文本,或是一个附件,也可以是复杂的一个Multipart,然后Multipart中又可以嵌套多个BodyPart和Multipart。下面是使用javaMail构造一封复杂的邮件,并发送该邮件。Java代码import java.io.File;
2014-05-25 12:10:12 472
转载 WebRTC源码分析二:音频模块结构
本文介绍WebRTC音频模块组成和结构,详细介绍音频引擎的配置和启动,相信看完本文后,很多人可以利用WebRTC完成一个音频通话程序开发。一、对外接口 音频部分的对外主要接口如下,各个接口之间的关系如图1所示。1)VoiceEngine:负责引擎的所有接口查询,存储共享数据信息ShareData。2)VoEBase:负责音频处理的基本操作。3)Vo
2014-05-21 15:33:40 698
转载 获得程序当前目录
char* get_exe_path() { static char buff[256]; char *p; #if defined(WIN32) ::GetModuleFileName(NULL, buff, sizeof(buff)); p = strrchr(buff, '\\'); #else in
2014-05-20 17:13:00 431
转载 Qt之文件操作 QFile
今天学习QT的文件操作 1、QIODevice直接继承自QObjectQIODevice类是输入/输出设备的基类。QIODevice为设备提供了公共实现和抽象接口用于读写块数据。QIODevice是一个抽象类,不能被实例化。被Q3Socket,Q3SocketDevice,QAbstractSocket,QBuffer,QFile,QLocalSoc
2014-05-20 15:31:32 6366
转载 WebRTC学习笔记
1. WebRTC学习1.1 WebRTC现状本人最早接触WebRTC是在2011年底,那时Google已经在Android源码中加入了webrtc源码,放在/external/webrtc/,但是Android并没有用到它,更没有被浏览器使用。当时试图在Android 2.3(Gingerbread)高通平台的手机上用H.264 硬件codec替换掉WebRTC缺
2014-05-18 10:55:56 2049
转载 Windows 下安装NPM
Node.js停火各大技术论坛都在讨论,前段时间工作太忙没时间学习,趁着周末空闲玩玩,在网上找了些资料发现Node.js本身有windows版和unix版下载和使用都挺方便但是其扩展模块依赖复杂通过手动到网站上下载非常麻烦,所以的NPM介绍都要求在Linux或在windows上通过Cygwin进行安装,按照网上的办法下载Cygwin安装node.js死活不成功(执行./configure 报cyg
2014-05-18 10:55:07 655
转载 VC中使用XMLRPC提供接口(XMLPRC++)
首先从XMLRPC官网http://www.xmlrpc.com/,或者http://sourceforge.net/projects/xmlrpcpp/网站下载XMLRPC++0.7。解压。解压之后必须用vc6.0来运行编译,会生成一个xmlrpc.lib的文件,这个文件即为下面所需要用到的。1.熟悉XMLRPC可以运行xmlrpc.dsw工程中的的例子。阅读HelloServer、
2014-05-13 10:46:22 1070
原创 vc 分割路径、文件名
#include "stdio.h"#include "conio.h"void splitname(const char *szfullfilename, char *szpathname, char *szfilename, char *szextname);int main(void){char szfullfilename[255] = "C:\\windo
2014-05-11 01:44:58 1215
转载 高并发网站解决方案
海量数据处理分析笔者在实际工作中,有幸接触到海量的数据处理问题,对其进行处理是一项艰巨而复杂的任务。原因有以下几个方面:一、数据量过大,数据中什么情况都可能存在。如果说有10条数据,那么大不了每条去逐一检查,人为处理,如果有上百条数据,也可以考虑,如果数据上到千万级别,甚至过亿,那不是手工能解决的了,必须通过工具或者程序进行处理,尤其海量的数据中,什么情况都可能存在,例如,数据中某处格式出
2014-05-08 22:09:06 1808
转载 P2P 之 UDP穿透NAT的原理与实现(附源代码)
论坛上经常有对P2P原理的讨论,但是讨论归讨论,很少有实质的东西产生(源代码)。呵呵,在这里我就用自己实现的一个源代码来说明UDP穿越NAT的原理。首先先介绍一些基本概念: NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Netw
2014-05-08 22:00:57 1168
转载 Linux下Fork与Exec使用
一、引言 对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值。fork函数是Unix系统最杰出的成就之一,它是七十年代UNIX早期的开发者经过长期在理论和实践上的艰苦探索后取得的成果,一方面,它使操作系统在进程管理上付出了最小的代价,另一方面,又为程序员提供了一个简洁明了的多进程方法。与DOS和早期的Windows不同,Unix/Linu
2014-05-08 21:50:26 451
转载 wireshark 如何写过滤规则
一、IP过滤:包括来源IP或者目标IP等于某个IP比如:ip.src addr==192.168.0.208 or ip.src addr eq 192.168.0.208 显示来源IP ip.dst addr==192.168.0.208 or ip.dst addr eq 192.168.0.208 显示目标IP二、端口过滤:比如:tcp.port eq
2014-05-08 21:48:31 437
转载 高并发的epoll+多线程
epoll是linux下高并发服务器的完美方案,因为是基于事件触发的,所以比select快的不只是一个数量级。单线程epoll,触发量可达到15000,但是加上业务后,因为大多数业务都与数据库打交道,所以就会存在阻塞的情况,这个时候就必须用多线程来提速。下面是来一个网络连接创建一个线程处理业务,业务处理完,线程销毁。实际测试结果不是很理想,在没有业务的时候的测试结果是2000个/s
2014-05-08 21:47:25 623
转载 QQ游戏百万人同时在线服务器架构实现
QQ游戏于前几日终于突破了百万人同时在线的关口,向着更为远大的目标迈进,这让其它众多传统的棋牌休闲游戏平台黯然失色,相比之下,联众似乎已经根本不是QQ的对手,因为QQ除了这100万的游戏在线人数外,它还拥有3亿多的注册量(当然很多是重复注册的)以及QQ聊天软件900万的同时在线率,我们已经可以预见未来由QQ构建起来的强大棋牌休闲游戏帝国。服务器程序,其可承受的同时连接数目是有理论峰值的,通过C
2014-05-08 21:46:18 2248
转载 webrtc源码获取及编译
1、没安装svn就先装一个可以运行的版本2、下载并配置depot_tools 建立一个存放depot_tools的目录,command进入该目录 svn co http://src.chromium.org/svn/trunk/tools/depot_tools 下载后把depot_tools目录手动添加到系统环境变量PATH中3、建一个webrtc目录
2014-05-08 21:41:45 10567 1
转载 libjingle源码解析--libjingle是怎么运作的?
本文主要总结至libjingle源码和官方文章:http://code.google.com/apis/talk/libjingle/libjingle_applications.htmlligjingle的总体架构如下图:1.Application模块Ligjingle的应用程序首先调用XMPP Messaging Component的XmppClient对象进行登录
2014-05-08 21:40:24 941
转载 P2P实现的原理
首先先介绍一些基本概念: NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT从历史发展上分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。 最先提出的是基本的NAT(peakflys注:刚开始其实只是路由器上的一个
2014-05-08 21:39:01 858
转载 STUN和TURN技术浅析
在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet。很多时候,我们希望网络中的两台主机能够直接进行通信,即所谓的P2P通信,而不需要其他公共服务器的中转。由于主机可能位于防火墙或NAT之后,在进行P2P通信之前,我们需要进行检测以确认它们之间能否进行P2P通信以及如何通信。这种技术通常称为NAT穿透(NAT Traversal)。
2014-05-08 21:38:07 1339
转载 基于ICE方式SIP信令穿透Symmetric NAT技术研究
基于IP的语音、数据、视频等业务在NGN网络中所面临的一个实际困难就是如何有效地穿透各种NAT/FW的问题。对此,会话初始化协议SIP以往的解决方法有ALGs,STUN,TURN等方式。本文探讨了一种新的媒体会话信令穿透NAT/FW的解决方案—交互式连通建立方式(ICE)。它通过综合利用现有协议,以一种更有效的方式来组织会话建立过程,使之在不增加任何延迟同时比STUN等单一协议更具
2014-05-08 21:36:48 2805 1
转载 Tomcat一点一滴之(三)整合Apache、Nginx
前言:上两篇说了如何安装、部署Tomcat。可是有个问题来了,当Tomcat需要处理静态页面时就比较慢了,至少不如Apache,所以就出现了Apache+Tomcat的整合。不过网上有人总结了关于这两个开源软件整合还有一些原因:1、聚合。使用Apache做为前端大门,后端部署多个Tomcat实例,如果一个实例出现问题,Apache将忽略这个实例,让系统管理员高枕无忧。当然如
2014-05-08 21:34:24 517
转载 Tomcat部署Web应用方法总结
在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署。在下文中$CATALINA_HOME指的是Tomcat根目录。一、静态部署静态部署指的是我们在服务器启动之前部署我们的程序,只有当服务器启动之后,我们的Web应用程序才能访问。以下3种方式都可以部署:(以PetWeb项目为例说明,PetWeb目录假设是F:/PetWeb)1.利用Tomcat自动部署
2014-05-08 21:32:32 360
转载 SDL1.3支持多个窗口
在SDL1.2中是不支持多窗口的,而还没有正式发布的、非稳定状态下的SDL1.3是完全支持多窗口的。 下面是笔者写的一个简单的程序,其中创建2个视频窗口并在每一个窗口中显示不同位图: #include #include #include #include #include "SDL.h"#include "SDL_shape.h" void ren
2014-05-08 21:30:37 1489
原创 windows服务编写
关于windows服务启动的问题,请教C/C++ codevoid Help(){ printf("\t-install 安装windows服务\n"); printf("\t-uninstall 删除windows服务\n"); printf("\t-start 启动windows服务\n"); printf("\t-st
2014-05-08 10:17:50 666
转载 大陆身份证号码格式校验代码
最近项目用到身份证校验,在提交公安系统做实名校验前,需要自己检查一下身份证格式是否正确;毕竟每查询一次需要money啊;提前排除用户随手输入的号码。因此贴出了分享一下#ifndef __YSP_IDCARD_H__#define __YSP_IDCARD_H__#include string>#include stdlib.h>#include ctype.h>
2014-05-07 23:33:14 826
转载 Windows Socket实例
Windows下Socket编程主要包括以下几部分:服务端 1、初始化Windows Socket库。 2、创建Socket。 3、绑定Socket。 4、监听。 5、Accept。 6、接收、发送数据。客户端 1、初始化Windows Socket库。 2、创建Socket。 3、连接Socket。 4、接收
2014-05-07 23:29:46 366
转载 C++常用技巧一
1.CString 到 int int a; CString b="12"; a=atoi((const char *)b); 2.int 到 CString int a=12; CString b; b.Format("%d",a); 3. C++ Windows SDK 字符及字符
2014-05-07 23:27:19 363
转载 在对话框上显示位图的方法
找了好几个在对话框上显示位图的方法,都觉得麻烦,总算找到一个简单点的:在OnPaint()下: CBitmap bitmap; CBitmap* pOldBitmap; CDC MemDC; MemDC.CreateCompatibleDC(&dc); ///建立与显示设备兼容的内存设备场境 bitmap.LoadBitmap(IDB_BITMAP1
2014-05-07 23:18:46 474
转载 关于Date Time Picter的初始化和保存
使用Classwizard为时间控件生成CTime型变量,程序初始化时使用 CTime t(2000,12,12,0,0,0); m_starttime = t;UpdateData(FALSE);保存:LONG lTime = m_starttime.GetTime();存为LONG型值。要调用此值,使用: CTime t(lTime ); m_starttime
2014-05-07 23:13:58 518
转载 终于赶在软件测试部前头解决Access数据库压缩的问题
TCHAR szDestSQL[100]; TCHAR szSQL[100]; try { ::CoInitialize(NULL); sprintf(szSQL,"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Config.mdb;Jet OLEDB:DataBase Password
2014-05-07 23:11:43 557
转载 计算UDP校验和遇到的弱智问题。不知道对初学者有没有用
以下是计算UDP校验和以及发送原始数据的源代码#include #include #define IP_HDRINCL 2 // Header is included with data.typedef struct _IPHEADER { UCHAR VerHeadLen; //
2014-05-07 23:09:21 956
转载 把一个动态库改成静态编译库时提示MSVCRTD.lib已经在××中编译过的错误的解决办法
在porject->Setting->link->Input->Ignore libraries:增加 MSVCRTD.lib然后,在Stdafx.h中添加/* 当在Project/Setting/General中选择"Use MFC in a Static Library"时,需要以下两条语句:*/#pragma comment(linker, "/FORCE:MULTIPL
2014-05-07 23:06:31 553
转载 如何使用DirectShow播放一个文件
本文的目的是给出DirectShow编程的样式。这是一个简单的控制台应用程序,用来播放一个音频或视频文件。程序只有几行,但是它示范了DirectShow编程的某些能力。 如<DirectShow应用程序编程介绍>所写,一个DirectShow应用程序运行的基本步骤为:1、创建一个筛选器表管理器的实例2、使用筛选器表管理器生成一个筛选器表3、运行表,使数据在筛选器中流动。
2014-05-07 23:05:08 395
source insight格式化工具
2013-06-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人