资源简介
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
- 上一篇:西门子PLC工程实习
- 下一篇:精伦电子开发包最新开发包带网页插件
相关资源
- 图片-视频互换程序
- linux系统的二级文件系统(QT实现了简
- 设计一个用于人事管理的“人员”类
- 基于ffmpeg将avi视频转换为mp4视频
- Qt实现的简单的中国象棋程序
- 数据加密与数字签名系统
- Kinect手势代替鼠标控制PC
- 物业费管理系统源码超详细注释附文
- 长整数的代数计算 算法
- 二进制方式打包和解包文件
- 个人银行账户管理系统
- 使用ffmpeg将多张图片生成H264裸流并获
- OpenGL场景漫游
- VS开发进阶源码---烟花特效的生日祝福
- 资源管理器 中国地质大学数据结构
- 设停车场内只有一个可停放n辆汽车的
- vc写的一个游戏里面三维场景漫游
- 编程常用的素材(含png、jif、bmp、j
- Midas to FLAC3D-vs2010
- 直通BAT算法精讲
- ros小海龟定点移动程序
- 学生成绩档案管理系统—保证可用
- 面试算法LeetCode刷题班
- 交通咨询模拟系统
- Qt开机唤醒狩猎者
- 路由分组转发仿真系统的设计与实现
- 周立功CAN接口开发资料
- 仿QQ截图工具源代码
- NOIP必学内容之前缀和与差分颜鸿宇
- QT利用realtimechart画波形图
评论
共有 条评论