91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

1.使用ffmpeg將多張圖片生成H264文件; 2.從H264文件中獲取一幀圖片和一幀中的SLICE圖片; 3.能夠直接使用ffplay.exe播放H264文件; 4.完整工程,可直接運行(附帶測試圖片和實例); 5.vs2013;

資源截圖

代碼片段和文件信息

#include?“Decoder.h“
#include?“ShareHeader.h“

CDecoder::CDecoder(const?char?*_fpath)
:?m_filePath(_fpath)
?m_VideoStream(-1)
{

}

CDecoder::~CDecoder()
{
uninit();
}

void?CDecoder::init(DECODERFORMAT?_fmt)
{
RETURN_H264(_access(m_filePath.c_str()?0)?==?-1?“file?does?not?existed.\n“);

//get?a?AVFormatContext.
m_pFmtContext?=?avformat_alloc_context();
RETURN_H264(m_pFmtContext?==?0?“Decoder?initialize?fail.\n“);

//open?video?file.
RETURN_H264(avformat_open_input(&m_pFmtContext?m_filePath.c_str()?NULL?NULL)?
//get?streams?information.
RETURN_H264(avformat_find_stream_info(m_pFmtContext?NULL)?
//get?video?stream.
for?(unsigned?int?i?=?0;?i?nb_streams;?++i)
{
if?(m_pFmtContext->streams[i]->codecpar->codec_type?==?AVMEDIA_TYPE_VIDEO)
{
m_VideoStream?=?i;
break;
}
}

//get?decoder.
AVCodec?*pDecoder?=?avcodec_find_decoder(m_pFmtContext->streams[m_VideoStream]->codecpar->codec_id);
RETURN_H264(pDecoder?==?0?“was?not?find?decoder.\n“);
//allloc?a?AVCodecContext.
m_pCodecContext?=?avcodec_alloc_context3(pDecoder);
RETURN_H264(m_pCodecContext?==?0?“alloc?AVCodecContext?fail.\n“);
//codec?paramter?to?AVCodecContext.
avcodec_parameters_to_context(m_pCodecContext?m_pFmtContext->streams[m_VideoStream]->codecpar);

//open?decoder.
RETURN_H264(avcodec_open2(m_pCodecContext?pDecoder?NULL)?
//alloc?frame?to?deal?with?data.
m_pframeData?=?av_frame_alloc();
m_pframeRGBA?=?av_frame_alloc();

//make?sure?the?size?of?picture.
switch?(_fmt)
{
case?FMT_BGR24:?m_src_pix_fmt?=?AV_PIX_FMT_BGR24;?break;
case?FMT_RGB24:?m_src_pix_fmt?=?AV_PIX_FMT_RGB24;?break;
//case?FMT_RGBA:??m_src_pix_fmt?=?AV_PIX_FMT_RGBA;??break;
default:break;
}
int?_size?=?av_image_get_buffer_size(m_src_pix_fmt?m_pCodecContext->width?m_pCodecContext->height?2);
uint8_t?*_buf?=?(uint8_t?*)av_malloc(_size);
av_image_fill_arrays(m_pframeRGBA->data?m_pframeRGBA->linesize?_buf?m_src_pix_fmt?m_pCodecContext->width?m_pCodecContext->height?2);

//get?a?swsContext?by?format.
m_pSwsContext?=?sws_getContext(
m_pCodecContext->width?m_pCodecContext->height?m_pCodecContext->pix_fmt
m_pCodecContext->width?m_pCodecContext->height?m_src_pix_fmt
SWS_BICUBIC?NULL?NULL?NULL);
RETURN_H264(m_pSwsContext?==?0?“get?a?swsContext?fail.\n“);
}

void?CDecoder::setCallBack(PICTUREDATA?_func)
{
m_pFunc?=?_func;
}

void?CDecoder::Procframe()
{
RETURN_H264(m_pFmtContext?==?0?||?m_pCodecContext?==?0?||?m_pframeData?==?0?||?m_pframeRGBA?==?0?||?m_pSwsContext?==?0
“paramters?is?null.\n“);

AVPacket?packet;
while?(m_VideoStream?!=?-1?&&?m_bExit?==?false)
{
if?(m_bPause)
{
std::this_thread::sleep_for(std::chrono::milliseconds(100));
continue;
}

BREAK_H264(av_read_frame(m_pFmtContext?&packet)? “read?frame?fail?or?eof.\n“);


?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????1899??2018-10-09?11:11??H264\FFmpeg2Video.sln

?????文件???????1207??2018-07-25?16:41??H264\include\libavcodec\ac3_parser.h

?????文件???????1354??2018-07-25?16:41??H264\include\libavcodec\adts_parser.h

?????文件?????211684??2018-07-25?16:41??H264\include\libavcodec\avcodec.h

?????文件???????2570??2018-07-25?16:41??H264\include\libavcodec\avdct.h

?????文件???????3111??2018-07-25?16:41??H264\include\libavcodec\avfft.h

?????文件???????2853??2018-07-25?16:41??H264\include\libavcodec\d3d11va.h

?????文件???????4044??2018-07-25?16:41??H264\include\libavcodec\dirac.h

?????文件???????3715??2018-07-25?16:41??H264\include\libavcodec\dv_profile.h

?????文件???????2361??2018-07-25?16:41??H264\include\libavcodec\dxva2.h

?????文件???????1650??2018-07-25?16:41??H264\include\libavcodec\jni.h

?????文件???????2825??2018-07-25?16:41??H264\include\libavcodec\mediacodec.h

?????文件???????3763??2018-07-25?16:41??H264\include\libavcodec\qsv.h

?????文件???????2297??2018-07-25?16:41??H264\include\libavcodec\vaapi.h

?????文件???????5796??2018-07-25?16:41??H264\include\libavcodec\vdpau.h

?????文件???????4785??2018-07-25?16:41??H264\include\libavcodec\version.h

?????文件???????4029??2018-07-25?16:41??H264\include\libavcodec\videotoolbox.h

?????文件???????2285??2018-07-25?16:41??H264\include\libavcodec\vorbis_parser.h

?????文件???????6062??2018-07-25?16:41??H264\include\libavcodec\xvmc.h

?????文件??????17918??2018-07-25?16:41??H264\include\libavdevice\avdevice.h

?????文件???????1861??2018-07-25?16:41??H264\include\libavdevice\version.h

?????文件??????42263??2018-07-25?16:41??H264\include\libavfilter\avfilter.h

?????文件???????6316??2018-07-25?16:41??H264\include\libavfilter\buffersink.h

?????文件???????6608??2018-07-25?16:41??H264\include\libavfilter\buffersrc.h

?????文件???????2334??2018-07-25?16:41??H264\include\libavfilter\version.h

?????文件?????117558??2018-07-25?16:41??H264\include\libavformat\avformat.h

?????文件??????31557??2018-07-25?16:41??H264\include\libavformat\avio.h

?????文件???????3781??2018-07-25?16:41??H264\include\libavformat\version.h

?????文件???????1673??2018-07-25?16:41??H264\include\libavutil\adler32.h

?????文件???????1834??2018-07-25?16:41??H264\include\libavutil\aes.h

............此處省略380個文件信息

評論

共有 條評論