- 博客(30)
- 资源 (18)
- 收藏
- 关注
转载 如何捕捉视频流并保存到文件(Capture video to File)
1 将视频流保存到AVI文件AVI Mux filter接收从capture pin过来的视频流,然后将其打包成AVI流。音频流也可以连接到AVI Mux Filter上,这样mux filter就将视频流和视频流合成AVI流。File writer将AVI流写入到文件中。可以像下面这样构建graph图Cpp代码 IBaseFilter *pM
2013-11-18 17:20:00
7443
转载 DirectShow 字符叠加Filter编码分析
在很多视频播放的软件当中,字幕的处理是免不了的,有些可能本身已经加载到图像当中未做处理,但大部分都是通过字符叠加来进行处理的。DirectShow 的字符叠加Filter在这些软件中都扮演这绝佳的作用。这一节来介绍DirectShow字符叠加Filter编码的实现,如下详细介绍;这个Filter的大概作用是在视频流指定的一段时间内进行字符叠加,字符字体、大小、颜色都进行控制,普遍支持RGB的各
2013-08-20 10:10:54
1292
转载 C++调用JAVA方法详解
C++调用JAVA主要用到了SUN公司的JNI技术, JNI是Java Native Interface的 缩写。从Java 1.1开始,Java Native Interface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。相关资料见http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/jniTOC.htm
2013-07-17 15:20:29
1310
转载 VC++中进程间相互通信的十一种方法
进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方 另一个是地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内存。属于其它进程的
2013-04-17 10:38:51
620
转载 VC程序中实现控件的动态生成与响应
一、创建动态控件: 为了对照,我们先来看一下静态控件的创建。 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示。 静态控件不需要调用Create()函数来创建。 而创建动态控件有很大不同,以下以按
2013-04-11 16:48:19
661
原创 VC中sort()排序函数的使用
VC的include目录下的algorithm.h文件中有很多数学算法的函数,最近使用了其中的sort()函数,发现在对字符数组排序时存在问题。该函数原型为sort(_RI _F, _RI _L, [_Pr _P]),其三个参数依次为排序队列第一个元素、最后一个元素和排序算法(默认为升序)。以vector结构为例:vector v;sort(v.begin(), v.end);对
2013-04-11 16:27:02
3681
转载 ubuntu下ndk编译ffmpeg0.8.1
ffmpeg最新版本有些问题,比如jni/liblibavcodec/ac3enc_combined.c在最新的版本中已经没有了,但是又多了一个ac3enc_template.c的文件。虽然更新版本对于开发人员可以使用到更多的功能,但是如果这样乱改的话真的好无语,非常讨厌这种更新版本的不一致性,唉,只是抱怨一下我使用的还是稍微老一点的版本ffmpeg 0.8.1的,至少老的版本能搜到更多的
2013-03-12 14:48:35
880
转载 SMTP Client with SSL/TLS
本文源代码地址:http://download.youkuaiyun.com/detail/ilovethissite/5026181IntroductionI needed to send emails in a product written in C++, so I searched the Internet and found a great article: SMTP Clien
2013-01-24 17:54:10
3904
转载 VC 如何使程序运行后自己删除自己
有时候,我们需要创建一个运行后能够自己删除自己的可执行程序即自删除程序。很明显如果一个进程通过直接调用DeleteFile()来删除自己是不可能的。必须另想办法,经过本人在网上参考很多资料后实际测试并集众家之所长,发现有二种方法效果比较好。现在将其封装成函数,这样使用将更加容易:方法1,调用BAT文件。[cpp] view plaincopy
2013-01-16 11:39:59
562
转载 VC 为程序创建快捷方式的详细讲解
有时候,为了方便用户使用我们编写的程序,需要在桌面,快速启动或程序组中创建程序的快捷方式。下面就介绍在VC下如何为程序创建快捷方式。一.得到桌面,快速启动或程序组的路径这里介绍二个win32 API函数来完成这个任务。第一个函数 获得系统特殊路径HRESULT SHGetSpecialFolderLocation(HWND hwndOwner, int n
2013-01-16 11:36:24
852
转载 VC控制台颜色设置
通常控制台都是白字黑底的,千篇一律不免单调。适当的在控制台中加入一些彩色可以让人耳目一新,本文介绍如何使用系统API接口去修改控制台的文字和背景颜色。 主要用到如下二个函数:得到standard input, standard output, or standard error的设备句柄:HANDLE GetStdHandle(DWORD nStdHandle);
2013-01-16 11:25:48
610
转载 Windows 各种计时函数总结
本文对Windows平台下常用的计时函数进行总结,包括精度为秒、毫秒、微秒三种精度的5种方法。分为在标准C/C++下的二种time()及clock(),标准C/C++所以使用的time()及clock()不仅可以用在Windows系统,也可以用于Linux系统。在Windows系统下三种,使用Windows提供的API接口timeGetTime()、GetTickCount()及QueryPerf
2013-01-16 11:12:39
440
转载 关键段,事件,互斥量,信号量的“遗弃”问题
一.什么是“遗弃”问题在《秒杀多线程第七篇 经典线程同步 互斥量Mutex》讲到了互斥量能处理“遗弃”问题,下面引用原文:互斥量常用于多进程之间的线程互斥,所以它比关键段还多一个很有用的特性——“遗弃”情况的处理。比如有一个占用互斥量的线程在调用ReleaseMutex()触发互斥量前就意外终止了(相当于该互斥量被“遗弃”了),那么所有等待这个互斥量的线程是否会由于该互斥量无法被触
2013-01-16 10:49:56
598
转载 读者写者问题
与上一篇生产者消费者问题一样,读者写者也是一个非常著名的同步问题。读者写者问题描述非常简单,有一个写者很多读者,多个读者可以同时读文件,但写者在写文件时不允许有读者在读文件,同样有读者在读文件时写者也不去能写文件。上面是读者写者问题示意图,类似于生产者消费者问题的分析过程,首先来找找哪些是属于“等待”情况。第一.写者要等到没有读者时才能去写文件。第二.所有读者要等待
2013-01-16 10:45:48
1257
转载 生产者消费者问题
生产者消费者问题是一个著名的线程同步问题,该问题描述如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,显然生产者和消费者之间必须保持同步,即不允许消费者到一个空的缓冲区中取产品,也不允许生产者向一个已经放入产品的缓冲区中再次投放产品。
2013-01-16 10:44:20
890
转载 信号量Semaphore
首先也来看看如何使用信号量,信号量Semaphore常用有三个函数,使用很方便。下面是这几个函数的原型和使用说明。第一个 CreateSemaphore函数功能:创建信号量函数原型:HANDLE CreateSemaphore( LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialC
2013-01-16 10:33:56
747
转载 经典线程同步总结 关键段 事件 互斥量 信号量
首先来看下关于线程同步互斥的概念性的知识,相信大家通过前面的文章,已经对线程同步互斥有一定的认识了,也能模糊的说出线程同步互斥的各种概念性知识,下面再列出从《计算机操作系统》一书中选取的一些关于线程同步互斥的描述。相信先有个初步而模糊的印象再看下权威的定义,应该会记忆的特别深刻。 1.线程(进程)同步的主要任务答:在引入多线程后,由于线程执行的异步性,会给系统造成混乱,特别
2013-01-16 10:32:04
709
转载 多线程同步内功心法——PV操作上
为了提高在实际问题中分析和思考多个线程之间同步互斥问题的能力,接下来将讲解PV操作,这也是操作系统中的重点和难点。本文将会先简要介绍下PV操作的来源和基本使用方法,然后再通过两道经典的计算机考研真题——放水果和安全岛来示范如何运用PV操作。 先讲讲PV操作的起源和用法。1962年,荷兰学者Dijksrta在参与X8计算机的开发中设计并实现了具有多道程序运行能力的操作系统——
2013-01-16 10:30:23
772
转载 读写锁SRWLock
本篇将介绍一种新方法——读写锁SRWLock来解决这一问题。读写锁在对资源进行保护的同时,还能区分想要读取资源值的线程(读取者线程)和想要更新资源的线程(写入者线程)。对于读取者线程,读写锁会允许他们并发的执行。当有写入者线程在占有资源时,读写锁会让其它写入者线程和读取者线程等待。因此用读写锁来解决读者写者问题会使代码非常清晰和简洁。 下面就来看看如何使用读写锁,要注意编译
2013-01-16 10:29:02
923
转载 互斥量Mutex
互斥量也是一个内核对象,它用来确保一个线程独占一个资源的访问。互斥量与关键段的行为非常相似,并且互斥量可以用于不同进程中的线程互斥访问资源。使用互斥量Mutex主要将用到四个函数。下面是这些函数的原型和使用说明。第一个 CreateMutex函数功能:创建互斥量(注意与事件Event的创建函数对比)函数原型:HANDLECreateMutex( LPSEC
2013-01-15 15:28:47
681
转载 事件Event
本篇介绍用事件Event来尝试解决这个线程同步问题。首先介绍下如何使用事件。事件Event实际上是个内核对象,它的使用非常方便。下面列出一些常用的函数。 第一个 CreateEvent函数功能:创建事件函数原型:HANDLECreateEvent( LPSECURITY_ATTRIBUTESlpEventAttributes, BOO
2013-01-15 15:22:12
562
原创 关键段CS总结
1.关键段共初始化化、销毁、进入和离开关键区域四个函数。初始化:void InitializeCriticalSection(LPCRITICAL_SECTIONlpCriticalSection);销毁:void DeleteCriticalSection(LPCRITICAL_SECTIONlpCriticalSection);进入关键区域:void Enter
2013-01-15 14:38:26
789
转载 原子操作 Interlocked系列函数
在多线程中,经常有进行加减操作的情况,“+”、“-”等均不是院子操作,如直接使用则可能会导致一些意外的结果。本文介绍了Interlocked院子操作系列函数,非常方便。为了描述方便和代码简洁起见,我们可以只输出最后的报数结果来观察程序是否运行出错。这也非常类似于统计一个网站每天有多少用户登录,每个用户登录用一个线程模拟,线程运行时会将一个表示计数的变量递增。程序在最后输出计数的值表示有今天
2013-01-15 14:15:59
658
转载 CreateThread与_beginthreadex本质区别
本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别,在实际的编程中到底应该使用CreateThread还是_beginthreadex? 使用多线程其实是非常容易的,下面这个程序的主线程会创建了
2013-01-15 14:09:40
514
原创 ffmpeg第三方库编译记录
最近在研究ffmpeg的编译,之前使用的Ubuntu,需要安装虚拟机,非常麻烦,所以后来改研究在Windows平台编译。一开始遇到很多挫折,参考了网上很多的帖子,但要么不全要么内容已过期,经过我的反复试验或研究,最终搞定了。在此记录一下,也希望能对编译ffmpeg的朋友们有所帮助。首先安装Mingw和Msys平台,可以参考我其他几篇转载的帖子,基本都不会有问题然后从ffmpeg官网下载
2013-01-11 16:17:53
3095
1
转载 MinGW下编译ffmpeg静态库给Visual C++使用
首先推荐 http://ffmpeg.zeranoe.com/builds/, 这里已经有编译好的动态连接库。可惜上面没静态链接库。我也试过 DLL2Lib, 但是无法连接LIBCMT库,只能使用MSVCRT所以一定要静态库的话只能自己编译了。在Windows上用MinGW编译真是个痛苦的过程,没有yum install和apt-get,所有的依赖项要自己找全。废话少说,下面是编译
2013-01-10 17:52:50
979
转载 Windows下利用MinGW编译FFmpeg
前言: FFmpeg开源的项目没有提供Windows下的编译方式,因为需要在Windows下利用FFmpeg解H264编码的视频文件,所以搜集参考了网上的一些资料,把Linux下编译FFmpeg的 *.a 、*.so库文件利用MinGW编译为Windows下可用的 *.lib、 *.dll库文件。 1.下载最新的FFmpeg源码包, 我下载时间是2012-02
2013-01-09 17:53:03
734
转载 手把手教你在Windows下使用MinGW编译libav
libav是在Linux下使用纯c语言开发的,不可避免的,libav源码使用了一些gcc的特性,那么在Windows下很难使用VC编译,但是使用MinGW编译却简单多了,下面我将根据自己的经历逐步介绍使用MinGW编译libav的过程以及在此过程中遇到的问题及其解决方法。1 安装MinGW编译环境 1.1 安装MinGWl 下载和运行最新的mingw-get-inst
2013-01-09 17:50:52
1229
转载 在Windows下编译FFmpeg详细说明
【前言】本文参考网上大量资料,经整理而成,并经实践验证,最后更新日期2010年3月11日。另外本人使用开发工具为Delphi,不会VC,所以没有编译VC相关的lib库部分。本文搭建MinGW+MSYS环境路径分别假设为C:\MinGW和C:\MSYS,并且为纯手工安装,即下载相应的压缩包,直接解压到相应目录。【简介】■FFmpeght
2013-01-09 17:48:44
1590
ffmpeg最新 2.0版源代码
2013-07-24
ffmpeg 1.1.1(2013年1月发布)Windows版
2013-01-25
ffmpeg最新稳定版源代码
2012-09-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人