资源简介
使用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个文件信息
- 上一篇:半导体器件物理-施敏
- 下一篇:ACM图灵奖演讲集:前20年
相关资源
- ffmpeg解码sdl播放h264
- 最简单的利用ffmpeg获取视频的图片
- 最简单的基于FFmpeg的编码器 1.2
- vs2012调试ffmpeg.c
- 基于FFMPEG SDK流媒体开发1---解码媒体文
- ffmpeg 源码demo
- 最简单的基于FFMPEG的AVDevice的 1.2
- 最简单的基于FFMPEG的音频编码器 1.1
- 最简单的基于FFMPEG+SDL的视频播放器
- ffmpeg提取mp4关键帧保存为jpg.zip
- mp4_play.zip
- ffmpeg+qt的简单播放器
- 使用ffmpeg将多张图片生成H264裸流并获
- ffmpeg h264 转换jpg
- 利用FFmpeg将Jpeg图片转为任意视频容器
-
KindEditor与jwpla
yer集成,优化kindEdi - ffmpeg exeWINXP的最后一个可运行版本
- 最简单的基于FFMPEG的视频编码器修正
- mp4测试视频,可以用它测试处理MP4文
- ffmpeg-vs2013
- 基于FFMPEG_SDL2_音视频播放_参考音频时
- ffmpeg-3.2-win32-shared.zip
- ffmpeg录音
- ffmpeg资料全
- ffmpeg_windows屏幕录制并编码成H264
- windows32位系统的ffmpeg
- 利用ffmpeg提取任意格式视频帧关键帧
- ffmpeg3.0源码
- FFmpeg解码+SDL播放
- ffmpeg封装H264成MP4、AVI视频格式,及提
评论
共有 条评论