#include "Ffmpeg_Decode.h"
#define RECV_SAVE_BUF_LENGTH 1024*1024
void main()
{
Ffmpeg_Decoder ffmpegobj;
ffmpegobj.Ffmpeg_Decoder_Init();//初始化解码器
FILE *pf = NULL;
fopen_s(&pf, "myData.h264", "rb");
while (true)
{
ffmpegobj.nDataLen = fread(ffmpegobj.filebuf, 1, 1024 * 10, pf);//读取文件数据
if (ffmpegobj.nDataLen<=0)
{
fclose(pf);
break;
}
else
{
ffmpegobj.haveread = 0;
while (ffmpegobj.nDataLen > 0)
{
int nLength = av_parser_parse2(ffmpegobj.avParserContext, ffmpegobj.c, &ffmpegobj.yuv_buff,
&ffmpegobj.nOutSize, ffmpegobj.filebuf + ffmpegobj.haveread, ffmpegobj.nDataLen, 0, 0, 0);//查找帧头
ffmpegobj.nDataLen -= nLength;//查找过后指针移位标志
ffmpegobj.haveread += nLength;
if (ffmpegobj.nOutSize <= 0)
{
continue;
}
ffmpegobj.avpkt.size = ffmpegobj.nOutSize;//将帧数据放进包中
ffmpegobj.avpkt.data = ffmpegobj.yuv_buff;
while (ffmpegobj.avpkt.size > 0)
{
ffmpegobj.decodelen = avcodec_decode_video2(ffmpegobj.c, ffmpegobj.m_pYUVFrame, &ffmpegobj.piclen, &ffmpegobj.avpkt);//解码
if (ffmpegobj.decodelen < 0)
{
break;
}
if (ffmpegobj.piclen)
{
ffmpegobj.scxt = sws_getContext(ffmpegobj.c->width, ffmpegobj.c->height, ffmpegobj.c->pix_fmt, ffmpegobj.c->width, ffmpegobj.c->height, PIX_FMT_BGR24, SWS_POINT, NULL, NULL, NULL);//初始化格式转换函数
if (ffmpegobj.scxt!= NULL)
{
avpicture_fill((AVPicture*)ffmpegobj.m_pRGBFrame, (uint8_t*)ffmpegobj.rgb_buff, PIX_FMT_RGB24, ffmpegobj.c->width, ffmpegobj.c->height);//将rgb_buff填充到m_pRGBFrame
if (avpicture_alloc((AVPicture *)ffmpegobj.m_pRGBFrame, PIX_FMT_RGB24, ffmpegobj.c->width, ffmpegobj.c->height) >= 0)
{
sws_scale(ffmpegobj.scxt, ffmpegobj.m_pYUVFrame->data, ffmpegobj.m_pYUVFrame->linesize, 0,
ffmpegobj.c->height, ffmpegobj.m_pRGBFrame->data, ffmpegobj.m_pRGBFrame->linesize);
ffmpegobj.Ffmpeg_Decoder_Show(ffmpegobj.m_pRGBFrame, ffmpegobj.c->width, ffmpegobj.c->height);//解码图像显示
}
sws_freeContext(ffmpegobj.scxt);//释放格式转换器资源
avpicture_free((AVPicture *)ffmpegobj.m_pRGBFrame);//释放帧资源
av_free_packet(&ffmpegobj.avpkt);//释放本次读取的帧内存
}
}
ffmpegobj.avpkt.size -= ffmpegobj.decodelen;
ffmpegobj.avpkt.data += ffmpegobj.decodelen;
}
}
}
}
ffmpegobj.Ffmpeg_Decoder_Close();//关闭解码器
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这个是用FFmpeg所做的视频解码工程,经过了本人封装,FFmpeg也已经配置在工程里面。不过由于本人使用了OpenCV进行了图片数据的读取显示,还需要配置OpenCV才能使用。关于本工程对应的博客说明地址如下http://blog.csdn.net/weixinhum/article/details/37731011
资源推荐
资源详情
资源评论
收起资源包目录
FFmpge视频解码(从H264视频流到图像) (101个子文件)
Ffmpeg_Decode_Main.cpp 2KB
Ffmpeg_Decode.cpp 2KB
avcodec-53.dll 12.99MB
avcodec-53.dll 12.99MB
avformat-53.dll 2.39MB
avformat-53.dll 2.39MB
avfilter-2.dll 883KB
avfilter-2.dll 883KB
avdevice-53.dll 342KB
avdevice-53.dll 342KB
swscale-2.dll 292KB
swscale-2.dll 292KB
postproc-51.dll 157KB
postproc-51.dll 157KB
avutil-51.dll 136KB
avutil-51.dll 136KB
swresample-0.dll 35KB
swresample-0.dll 35KB
Ffmpeg_Decode.vcxproj.filters 1KB
avcodec.h 154KB
avformat.h 75KB
avfilter.h 37KB
avio.h 26KB
opt.h 24KB
pixfmt.h 15KB
intreadwrite.h 14KB
swscale.h 12KB
common.h 11KB
inttypes.h 8KB
avutil.h 7KB
pixdesc.h 7KB
avstring.h 7KB
eval.h 6KB
avfiltergraph.h 6KB
audioconvert.h 6KB
mem.h 6KB
samplefmt.h 6KB
log.h 6KB
xvmc.h 6KB
imgutils.h 5KB
swresample.h 5KB
dict.h 5KB
version.h 5KB
parseutils.h 5KB
version.h 4KB
fifo.h 4KB
vda.h 4KB
vaapi.h 4KB
attributes.h 4KB
rational.h 4KB
mathematics.h 4KB
postprocess.h 3KB
error.h 3KB
buffersink.h 3KB
avfft.h 3KB
avdevice.h 3KB
bswap.h 3KB
vdpau.h 3KB
cpu.h 3KB
lzo.h 2KB
avcodec.h 2KB
file.h 2KB
avassert.h 2KB
lfg.h 2KB
base64.h 2KB
dxva2.h 2KB
sha.h 2KB
aes.h 2KB
vsrc_buffer.h 2KB
Ffmpeg_Decode.h 2KB
intfloat_readwrite.h 1KB
crc.h 1KB
adler32.h 1KB
random_seed.h 1KB
md5.h 1KB
opt.h 1KB
avconfig.h 170B
myData.h264 241KB
vc120.idb 915KB
Ffmpeg_Decode.lastbuildstate 150B
avcodec.lib 55KB
avformat.lib 45KB
avutil.lib 41KB
swscale.lib 41KB
avfilter.lib 35KB
swresample.lib 4KB
postproc.lib 3KB
avdevice.lib 2KB
Ffmpeg_Decode.log 2KB
Ffmpeg_Decode.obj 201KB
Ffmpeg_Decode_Main.obj 200KB
vc120.pdb 1.34MB
Ffmpeg_Decode.sln 985B
Ffmpeg_Decode.v12.suo 22KB
CL.read.1.tlog 41KB
link.read.1.tlog 5KB
link.command.1.tlog 4KB
cl.command.1.tlog 3KB
CL.write.1.tlog 1KB
link.write.1.tlog 488B
共 101 条
- 1
- 2
_寒潭雁影
- 粉丝: 2441
- 资源: 41
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页