• 大小: 20.24MB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-02-04
  • 语言: 其他
  • 标签: C++  

资源简介

vs2010 环境下pc端实时解码h264码流,调试测试通过,欢迎大家下载!

资源截图

代码片段和文件信息

#include 
#include 
#include “stdafx.h“
#include “Capture.h“
#include “CaptureDlg.h“

#if defined(WIN32) && !defined(__cplusplus)
#define inline __inline
#endif

#ifdef __cplusplus
 extern “C“
 {
#endif
 
 #include “libavcodec/avcodec.h“
 #include “libavformat/avformat.h“
 #include “libswscale/swscale.h“
 #include “libavutil/avutil.h“

#ifdef __cplusplus
 }
#endif

AVPacket avpkt;
AVCodec* codec;
AVCodecContext* pCodecCtx;
AVCodecParserContext* pCodecParserCtx;
AVframe *pframe *pframeRGB;
struct SwsContext* pImgCtx;
uint8_t* pRGBBuf;
int RGBBufBytes;

AVPacket avpkt1;
AVCodec* codec1;
AVCodecContext* pCodecCtx1;
AVCodecParserContext* pCodecParserCtx1;
AVframe *pframe1 *pframeRGB1;
struct SwsContext* pImgCtx1;
uint8_t* pRGBBuf1;
int RGBBufBytes1;

#define SAVE_RGB 0

#if SAVE_RGB
FILE *fp_rgb;
char filepath_rgb[] = “\\ch0.rgb“;

FILE *fp_rgb1;
char filepath_rgb1[] = “\\ch1.rgb“;
#endif

#define TRACE  

int init_h264_decode()
{
av_init_packet(&avpkt);

avcodec_register_all();

    codec = avcodec_find_decoder(AV_CODEC_ID_H264);
    if(!codec){
        TRACE(“Codec not found\n“);
        return -1;
    }
    pCodecCtx = avcodec_alloc_context3(codec);
    if(!pCodecCtx){
        TRACE(“Could not allocate video codec context\n“);
        return -1;
    }
 
    pCodecParserCtx=av_parser_init(AV_CODEC_ID_H264);
    if (!pCodecParserCtx){
        TRACE(“Could not allocate video parser context\n“);
        return -1;
    }
     
    if(codec->capabilities&AV_CODEC_CAP_TRUNCATED)
        pCodecCtx->flags|= AV_CODEC_FLAG_TRUNCATED; 
 
    if (avcodec_open2(pCodecCtx codec NULL) < 0) {
        TRACE(“Could not open codec\n“);
        return -1;
    }

    pframe = av_frame_alloc();
    pframeRGB = av_frame_alloc();
    if(!pframe || !pframeRGB){
        TRACE(“Could not allocate video frame\n“);
        return -1;
    }
 
    RGBBufBytes = 0;
    pRGBBuf = NULL;
    pImgCtx = NULL;

#if SAVE_RGB
if(fp_rgb)
{
fclose (fp_rgb);
fp_rgb = NULL;
}

fp_rgb = fopen(filepath_rgb “wb“);
if (!fp_rgb) {
TRACE(“Could not open output RGB file\n“);
return -1;
}
#endif

  return 0; 
}

int init_h264_decode1()
{
av_init_packet(&avpkt1);

avcodec_register_all();

    codec1 = avcodec_find_decoder(AV_CODEC_ID_H264);
    if(!codec1){
        TRACE(“Codec not found\n“);
        return -1;
    }
    pCodecCtx1 = avcodec_alloc_context3(codec1);
    if(!pCodecCtx1){
        TRACE(“Could not allocate video codec context\n“);
        return -1;
    }
 
    pCodecParserCtx1=av_parser_init(AV_CODEC_ID_H264);
    if (!pCodecParserCtx1){
        TRACE(“Could not allocate video parser context\n“);
        return -1;
    }
     
    if(codec1->capabilities&AV_CODEC_CAP_TRUNCATED)
        pCodecCtx1->flags|= AV_CODEC_FLAG_TRUNCATED; 
 
    if (avcodec_open2(pCodecCtx1 codec1 NULL) < 0) {
        TRACE(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     617273  2019-01-22 17:04  ffmpeg实时解码h264码流\ffmpeg-4.1-win32-dev.zip

     文件   20671077  2019-01-22 17:03  ffmpeg实时解码h264码流\ffmpeg-4.1-win32-shared.zip

     文件       9815  2019-01-28 13:31  ffmpeg实时解码h264码流\xm_h264_decoder.cpp

     目录          0  2019-01-30 10:25  ffmpeg实时解码h264码流

----------- ---------  ---------- -----  ----

             21298165                    4


评论

共有 条评论