• 大小: 42.94MB
    文件类型: .7z
    金币: 1
    下载: 0 次
    发布日期: 2023-07-05
  • 语言: 其他
  • 标签: ffmpeg4  OpenCV3  VS2017  

资源简介

ffmpeg4.0+OpenCV+VS2017 H264编解码示例。已经配置好环境,不需要再进行配置

资源截图

代码片段和文件信息

#include “ffmpegDecode.hpp“
#include 
#include  
#include   

using namespace cv;

void main()
{
Ffmpeg_Decoder ffmpegobj;
//图象编码
FILE *f = NULL;
char filename[100] = “1.h264“;
fopen_s(&f filename “rb“);//打开待解码文件
uchar videodata[10000];//视频数据
/**此部分用的是OpenCV读入图像对象并取得图像的数据区,也可以用别的方法获得图像数据区**/
Mat img(9601080CV_8UC3);//初始化图像
ffmpegobj.Ffmpeg_Decoder_Init(img.cols img.rows);//初始化解码器
list saveimglist;//图像队列
list emptyimglist;//空闲队列,提供预先开辟内存
uint8_t* imgdata;//图像数据区指针
for (size_t i = 0; i < 30; i++)//预先开辟30帧图像数据大小的内存空间,以供后面图像存放
{
imgdata = new uint8_t[img.rows*img.step];
emptyimglist.push_back(imgdata);
}

while (1)
{
int videodatalen = fread(videodata110000f);//数据读入
ffmpegobj.Ffmpeg_Decoder_Decode(videodatavideodatalen saveimglist emptyimglist);//解码
for (size_t i = 0; i < saveimglist.size(); i++)
{
imgdata= saveimglist.front();//获得解码完图像
saveimglist.pop_front();
memcpy(img.dataimgdata img.rows*img.step);
imshow(““img);//图像显示
waitKey(30);
emptyimglist.push_back(imgdata);//内存回归空闲队列
}
}
fclose(f);
ffmpegobj.Ffmpeg_Decoder_Close();
img.release();

for (size_t i = 0; i < saveimglist.size(); i++)//图像内存回收
{
imgdata = saveimglist.front();
delete[]imgdata;
}
for (size_t i = 0; i < emptyimglist.size(); i++)//图像内存回收
{
imgdata = emptyimglist.front(); 
delete[]imgdata;
}
}




评论

共有 条评论