FFMPEG打开摄像头

本文介绍了使用FFMPEG代替DirectShow技术控制摄像头的问题,基于雷霄骅的笔记进行了总结,实现了摄像头显示功能的重新启动。由于内容侧重于实践应用,部分配置细节未详述,如有需要可联系作者获取更多详情。
摘要由CSDN通过智能技术生成

1.由于现使用的DirctShow技术很难用切问题很多,需要了解FFMPEG技术来控制摄像头,在翻阅了雷神(雷霄骅-搞视频音频的别说你不知道哦,他是一代英才!给FFMPEG技术贡献巨大!)的笔记后汇总了一篇基于雷神原型下的重新启动摄像头显示功能;

2.由于本文章为了方便以后在工作中个人使用,所以很多配置细节没有详细说明,如需下载请联系本人;

3.直接贴源码;

#include "stdafx.h"
#include <stdio.h>  
#include "libavutil/pixfmt.h"
//#include "libavdevice/avdevice.h"

#define __STDC_CONSTANT_MACROS  

#ifdef _WIN32  
	//Windows  
	extern "C"  
{  
#include "libavcodec/avcodec.h"  
#include "libavformat/avformat.h"  
#include "libswscale/swscale.h"  
#include "libavdevice/avdevice.h"  
#include "SDL/SDL.h"  
};  
#else  
	//Linux...  
#ifdef __cplusplus  
	extern "C"  
{  
#endif  
#include <libavcodec/avcodec.h>  
#include <libavformat/avformat.h>  
#include <libswscale/swscale.h>  
#include <libavdevice/avdevice.h>  
#include <SDL/SDL.h>  
#ifdef __cplusplus  
};  
#endif  
#endif  

//Output YUV420P   
#define OUTPUT_YUV420P 0  
//'1' Use Dshow   
//'0' Use VFW  
#define USE_DSHOW 0  


//Refresh Event  
#define SFM_REFRESH_EVENT  (SDL_USEREVENT + 1)  

#define SFM_BREAK_EVENT  (SDL_USEREVENT + 2)  

#define av_frame_alloc  avcodec_alloc_frame

int thread_exit=0;  

int sfp_refresh_thread(void *opaque)  
{  
	thread_exit=0;  
	while (!thread_exit) {  
		SDL_Event event;  
		event.type = SFM_REFRESH_EVENT;  
		SDL_PushEvent(&event);  
		SDL_Delay(40);  
	}  
	thread_exit=0;  
	//Break  
	SDL_Event event;  
	event.type = SFM_BREAK_EVENT;  
	SDL_PushEvent(&event);  

	return 0;  
}  


//Show Dshow Device  
void show_dshow_device(){  
	AVFormatContext *pFormatCtx = avformat_alloc
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不期而遇相伴相惜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值