• 大小: 14.51MB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-01-31
  • 语言: 其他
  • 标签: ffmpeg  MP4  

资源简介

使用ffmpeg库把mp4视频文件保存为一帧一帧的JPG格式图片

资源截图

代码片段和文件信息

/*
*最简单的音频转码器(只处理音频)
*缪国凯 Mickel
*821486004@qq.com
*本程序实现从一个视频格式转码到另一个视频格式,只处理音频,视频忽略,若有多个音频流,只处理第一个采用swr_convert重取样
*2015-5-8
*/


#include “stdafx.h“

#ifdef __cplusplus
extern“C“
{
#endif
#include 
#include “libavcodec/avcodec.h“
#include “libavfilter/avfiltergraph.h“
#include “libavfilter/buffersink.h“
#include “libavfilter/buffersrc.h“
#include “libavutil/avutil.h“
#include “libavutil/opt.h“
#include “libavutil/pixdesc.h“
#include “libswresample\swresample.h“
#include “libavutil\fifo.h“
#include 
#include 

#pragma comment(lib “avcodec.lib“)
#pragma comment(lib “avformat.lib“)
#pragma comment(lib “avutil.lib“)
//#pragma comment(lib “avdevice.lib“)
#pragma comment(lib “avfilter.lib“)
//#pragma comment(lib “postproc.lib“)
#pragma comment(lib “swresample.lib“)
//#pragma comment(lib “swscale.lib“)
#ifdef __cplusplus
};
#endif

#define __STDC_CONSTANT_MACROS

#ifdef _WIN32
//Windows
extern “C“
{
#include “libavcodec/avcodec.h“
#include “libavformat/avformat.h“
#include “libswscale/swscale.h“
//#include “SDL.h“
};
#else
//Linux...
#ifdef __cplusplus
extern “C“
{
#endif
#include 
#include 
#include 
#include 
#ifdef __cplusplus
};
#endif
#endif

#define MAX_PATH 128
#include “stdio.h“
/**
* 将AVframe(YUV420格式)保存为JPEG格式的图片
*
* @param width YUV420的宽
* @param height YUV42的高
*
*/
int MyWriteJPEG(AVframe* pframe int width int height int iIndex)
{
// 输出文件路径
char out_file[MAX_PATH] = {0};


//   sprintf_s(out_file sizeof(out_file) “./%d.jpg“  iIndex);

sprintf(out_file“./tupian/%d.jpg“iIndex);

// 分配AVFormatContext对象
AVFormatContext* pFormatCtx = avformat_alloc_context();

// 设置输出文件格式
pFormatCtx->oformat = av_guess_format(“mjpeg“ NULL NULL);

// 创建并初始化一个和该url相关的AVIOContext
if( avio_open(&pFormatCtx->pb out_file AVIO_FLAG_READ_WRITE) < 0)
{
printf(“Couldn‘t open output file.“);
return -1;
}


// 构建一个新stream
AVStream* pAVStream = avformat_new_stream(pFormatCtx 0);
if( pAVStream == NULL )
{
return -1;
}


// 设置该stream的信息
AVCodecContext* pCodecCtx = pAVStream->codec;

pCodecCtx->codec_id = pFormatCtx->oformat->video_codec;
pCodecCtx->codec_type = AVMEDIA_TYPE_VIDEO;
pCodecCtx->pix_fmt = PIX_FMT_YUVJ420P;
pCodecCtx->width = width;
pCodecCtx->height = height;
pCodecCtx->time_base.num = 1;
pCodecCtx->time_base.den = 25;

// Begin Output some information
av_dump_format(pFormatCtx 0 out_file 1);
// End Output some information


// 查找解码器
AVCodec* pCodec = avcodec_find_encoder(pCodecCtx->codec_id);
if( !pCodec )
{
printf(“Codec not found.“);
return -1;
}
// 设置pCodecCtx的解码器为pCodec
if( avcodec_open2(pCodecCtx pCodec NULL) < 0 ) 
{
printf(“Could not open codec.“);
return -1;
}


//Write Header
avformat_write_header(pFormatCtx N

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

     文件    2686976  2018-03-22 11:23  Mp4ToJPG\ipch\mp4tojpg-568c8c52\mp4tojpg-c11bbb81.ipch

     文件    2686976  2018-03-21 15:40  Mp4ToJPG\ipch\transcodingaudiouseswrcontext-78e17787\transcodingaudiouseswrcontext-8be9c8c8.ipch

     文件    2162688  2017-08-15 17:29  Mp4ToJPG\ipch\transcodingaudiouseswrcontext-b668ddf6\transcodingaudiouseswrcontext-8be9c8c8.ipch

     文件    2686976  2017-08-15 17:32  Mp4ToJPG\ipch\transcodingaudiouseswrcontext-fec6938e\transcodingaudiouseswrcontext-8be9c8c8.ipch

     文件   18936320  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\avcodec-55.dll

     文件    1340928  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\avdevice-55.dll

     文件    2034688  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\avfilter-4.dll

     文件    5342720  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\avformat-55.dll

     文件     418304  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\avutil-52.dll

     文件       8908  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\befor_swr.txt

     文件    1709108  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\cuc_ieschool.ts

     文件       1222  2018-03-22 11:25  Mp4ToJPG\Mp4ToJPG\Debug\Mp4ToJPG.Build.CppClean.log

     文件         95  2018-03-22 11:25  Mp4ToJPG\Mp4ToJPG\Debug\Mp4ToJPG.log

     文件    1393457  2017-08-29 16:46  Mp4ToJPG\Mp4ToJPG\demo.mp4

     文件       9216  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\end_swr.txt

     文件       5721  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\inttypes.h

     文件     175612  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\libavcodec\avcodec.h

     文件       3111  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\libavcodec\avfft.h

     文件       2392  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\libavcodec\dxva2.h

     文件      10654  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\libavcodec\old_codec_ids.h

     文件       4007  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\libavcodec\vaapi.h

     文件       4094  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\libavcodec\vda.h

     文件       6200  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\libavcodec\vdpau.h

     文件       5593  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\libavcodec\version.h

     文件       6062  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\libavcodec\xvmc.h

     文件      16642  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\libavdevice\avdevice.h

     文件       1861  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\libavdevice\version.h

     文件       3321  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\libavfilter\asrc_abuffer.h

     文件       3784  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\libavfilter\avcodec.h

     文件      56887  2017-08-15 17:29  Mp4ToJPG\Mp4ToJPG\include\libavfilter\avfilter.h

............此处省略116个文件信息

评论

共有 条评论