资源简介
最新版本ffmpeg提取任意格式视频帧并保存
代码片段和文件信息
#include “stdafx.h“
#include
#include
#include
extern “C“{
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
};
//libavformat 用来处理解析视频文件并将包含在其中的流分离出来, 而libavcodec 则处理原始音频和视频流的解码
using namespace std;
#pragma comment(lib“avcodec.lib“)
#pragma comment(lib“avdevice.lib“)
#pragma comment(lib“avfilter.lib“)
#pragma comment(lib“avformat.lib“)
#pragma comment(lib“avutil.lib“)
#pragma comment(lib“postproc.lib“)
#pragma comment(lib“swresample.lib“)
#pragma comment(lib“swscale.lib“)
void SaveBmp(AVCodecContext *CodecContex AVframe *Picture int width int heightint num);
int main(){
char* sourceFile = “F:\\爱在春天 TV版 47.flv“;
AVFormatContext *pInputFormatContext = avformat_alloc_context();//NULL;
AVCodecContext *pInputCodecContext = NULL;
AVCodec *pInputCodec = NULL;
//注册库中含有的所有可用的文件格式和编码器,这样当打开一个文件时,它们才能够自动选择相应的文件格式和编码器。
av_register_all();
int ret;
// 打开视频文件
if((ret=avformat_open_input(&pInputFormatContext sourceFile NULL NULL))!=0){
cout<<“ can‘t open file “< return -1;
}
// 取出文件流信息
if(avformat_find_stream_info(pInputFormatContextNULL)<0){
cout<<“ can‘t find suitable codec parameters“< return -1;
}
//用于诊断 //产品中不可用
//dump_format(pInputFormatContext 0 sourceFile false);
//仅仅处理视频流
//只简单处理我们发现的第一个视频流
// 寻找第一个视频流
int videoIndex = -1;
for(int i=0; inb_streams; i++) {
if(pInputFormatContext->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO){
videoIndex = i;
break;
}
}
if(-1 == videoIndex){
cout<<“ can‘t find video stream !“< return -1;
}
// 得到视频流编码上下文的指针
pInputCodecContext = pInputFormatContext->streams[videoIndex]->codec;
// 寻找视频流的解码器
pInputCodec = avcodec_find_decoder(pInputCodecContext->codec_id);
if(NULL == pInputCodec){
cout<<“can‘t decode “< return -1;
}
// 通知解码器我们能够处理截断的bit流,bit流帧边界可以在包中
//视频流中的数据是被分割放入包中的。因为每个视频帧的数据的大小是可变的,
//那么两帧之间的边界就不一定刚好是包的边界。这里,我们告知解码器我们可以处理bit流。
if(pInputCodec->capabilities & CODEC_CAP_TRUNCATED){
pInputCodecContext->flags|=CODEC_FLAG_TRUNCATED;
}
//打开解码器
if(avcodec_open2(pInputCodecContext pInputCodecNULL) != 0) {
cout<<“decode error“< return -1;
}
int videoHeight;
int videoWidth;
videoWidth = pInputCodecContext->width;
videoHeight = pInputCodecContext->height;
AVPacket InPack;
int len = 0;
AVframe Outframe;
int nComplete=0;
// 加入这句话来纠正某些编码器产生的帧速错误
/* if(pInputCodecContext->frame_rate>1000 && pInputCodecContext->frame_rate_base==1)
pInputCodecContext->frame_r
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-09-08 14:55 FfmpegTest1\
目录 0 2013-09-08 14:55 FfmpegTest1\Debug\
目录 0 2013-09-08 13:56 FfmpegTest1\FfmpegTest1\
目录 0 2013-09-08 09:30 FfmpegTest1\FfmpegTest1\Debug\
文件 2612 2013-09-08 08:55 FfmpegTest1\FfmpegTest1\Debug\CL.read.1.tlog
文件 692 2013-09-08 08:55 FfmpegTest1\FfmpegTest1\Debug\CL.write.1.tlog
文件 55 2013-09-08 08:55 FfmpegTest1\FfmpegTest1\Debug\FfmpegTest1.lastbuildstate
文件 1405 2013-09-08 08:55 FfmpegTest1\FfmpegTest1\Debug\FfmpegTest1.log
文件 1179648 2013-09-08 08:55 FfmpegTest1\FfmpegTest1\Debug\FfmpegTest1.pch
文件 0 2013-09-08 08:55 FfmpegTest1\FfmpegTest1\Debug\FfmpegTest1.unsuccessfulbuild
文件 1486 2013-09-08 08:55 FfmpegTest1\FfmpegTest1\Debug\cl.command.1.tlog
文件 11679 2013-09-08 08:55 FfmpegTest1\FfmpegTest1\Debug\stdafx.obj
文件 52224 2013-09-08 08:55 FfmpegTest1\FfmpegTest1\Debug\vc100.idb
文件 126976 2013-09-08 08:55 FfmpegTest1\FfmpegTest1\Debug\vc100.pdb
文件 7972 2013-09-08 10:15 FfmpegTest1\FfmpegTest1\FfmpegTest1.vcxproj
文件 1334 2013-09-08 10:15 FfmpegTest1\FfmpegTest1\FfmpegTest1.vcxproj.filters
文件 143 2013-09-06 15:17 FfmpegTest1\FfmpegTest1\FfmpegTest1.vcxproj.user
文件 1743 2013-09-06 15:18 FfmpegTest1\FfmpegTest1\ReadMe.txt
文件 17116160 2013-09-06 12:54 FfmpegTest1\FfmpegTest1\avcodec-55.dll
文件 1241600 2013-09-06 12:54 FfmpegTest1\FfmpegTest1\avdevice-55.dll
文件 1988608 2013-09-06 12:54 FfmpegTest1\FfmpegTest1\avfilter-3.dll
文件 5139968 2013-09-06 12:54 FfmpegTest1\FfmpegTest1\avformat-55.dll
文件 357888 2013-09-06 12:54 FfmpegTest1\FfmpegTest1\avutil-52.dll
文件 303104 2013-09-06 12:54 FfmpegTest1\FfmpegTest1\ffmpeg.exe
文件 5828 2013-09-08 14:46 FfmpegTest1\FfmpegTest1\ffmpegTest.cpp
文件 527872 2013-09-06 12:54 FfmpegTest1\FfmpegTest1\ffplay.exe
文件 143360 2013-09-06 12:54 FfmpegTest1\FfmpegTest1\ffprobe.exe
文件 187392 2013-09-06 12:54 FfmpegTest1\FfmpegTest1\postproc-52.dll
文件 298 2013-09-06 15:18 FfmpegTest1\FfmpegTest1\stdafx.cpp
文件 320 2013-09-06 15:18 FfmpegTest1\FfmpegTest1\stdafx.h
文件 279040 2013-09-06 12:54 FfmpegTest1\FfmpegTest1\swresample-0.dll
............此处省略94个文件信息
- 上一篇:陈希孺版概率论与数理统计.rar
- 下一篇:windows32位系统的ffmpeg
相关资源
- windows32位系统的ffmpeg
- ffmpeg3.0源码
- FFmpeg解码+SDL播放
- ffmpeg封装H264成MP4、AVI视频格式,及提
- 从零开始学习音视频编程技术十二 录
- AudioResample
- 最简单的基于FFmpeg的libswscale的教程
- ffmpeg-2.5.2-win32-shared
- 利用FFmpeg将mkv视频转换为H.264
- 安卓交叉编译ffmepgx86_64版本
- ffmepg的安卓arm(armeabi-v7a)版本
- 基于ARM9的远程视频监控系统
- 最简单的基于FFmpeg的封装格式转换器
- SDK播放器加速.zip
- 基于ffmpeg的经典版 ffplay 音视频播放
- ffmpeg api实现视频转码音视频
- FFMPEG入门基础资料pdf
- ffmpeg ffdoc (FFMPEG的最完整教程)
- ffmpeg转码为hls代码
- ffmpeg-4.0.2最新版 windows vs2013编译动态
- ffmpeg实现直播功能
- linuxubuntu下ffmpeg + alsa 的音频播放器
- 内存H264+PCM发布rtmp.rar
- ffmpeg-4.2.1-win32-dev.zip
- M3U8视频PC机64位辅助工具2.0 —&md
- ffmpeg-3.2.tar.bz2
- 适用于VC的FFMpeg静态库已编译)
- 使用ffmpeg api解码h264视频码流,并且能
- MP4v2录制rtsp流存为MP4文件
- [8] ffmpeg + SDL2 实现的视频播放器「快
评论
共有 条评论