FFmpeg解码封装为类以及Opencv显示播放

本文介绍如何将FFmpeg的解码功能封装成类,并利用OpenCV进行视频显示和播放。主要内容包括解码函数接口的设计与实现。
摘要由CSDN通过智能技术生成



解码函数接口头文件

//#ifndef __FFMPEG_DECODE_H__
//#define __FFMPEG_DECODE_H__

// Opencv
#include <opencv/cv.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

extern "C"
{
#include "libavutil/avutil.h"
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
	//新版本里的图像转换结构需要引入的头文件
#include "libswscale/swscale.h"
};


using namespace cv;


//#pragma comment(lib, "avcodec.lib")
//#pragma comment(lib, "avformat.lib  ")
//#pragma comment(lib, "avutil.lib    ")
//#pragma comment(lib, "avdevice.lib  ")
//#pragma comment(lib, "avfilter.lib  ")
//#pragma comment(lib, "postproc.lib  ")
//#pragma comment(lib, "swresample.lib")
//#pragma comment(lib, "swscale.lib   ")



class ffmpegDecode
{
public:
	ffmpegDecode(char * file = NULL);
	~ffmpegDecode();
	cv::Mat getDecodedFrame();
	cv::Mat getLastFrame();
	int readOneFrame();
	int getFrameInterval();


private:
	AVFrame	*pAvFrame;
	AVFormatContext	*pFormatCtx;
	AVCodecContext	*pCodecCtx;
	AVCodec			*pCodec;
	int	i; 
	int videoindex;

	char *filepath;
	int ret, got_picture;
	SwsContext *img_convert_ctx;
	int y_size;
	AVPacket *packet;
	cv::Mat *pCvMat;
	void init();
	void openDecode();
	void prepare();
	void get(AVCodecContext *pCodecCtx, SwsContext *img_convert_ctx,AVFrame	*pFr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值