为了账号安全,请及时绑定邮箱和手机立即绑定

ffmpeg——vs集成ffmpeg相关开发

标签:
C++

ffmpeg是强大且完全开源的音视频处理工具,下文主要说明在windows下vs开发工具集成ffmpeg进行相关开发工作


一、将ffmpeg相关的api放入工程

https://img1.sycdn.imooc.com//5b5309680001f34904430199.jpg


二、配置包含目录、引用目录、链接器等环境

https://img1.sycdn.imooc.com//5b5309700001639b06400451.jpg


三、动态链接库dll文件可以放到debug目录下


https://img1.sycdn.imooc.com//5b53097900010d3704430279.jpg


四、代码开发


比如,一个简单的求输入视频文件时长的函数


头文件:

extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
};

 

 


函数实现:


float getvideolen(string strInputVideo){	float VideoLen =-1;	AVFormatContext	*pFormatCtx=NULL;	pFormatCtx = avformat_alloc_context();	int nerrnum = avformat_open_input(&pFormatCtx,strInputVideo.c_str(),NULL,NULL);	if( nerrnum!=0 )	{		return -2;	}	nerrnum = avformat_find_stream_info(pFormatCtx,NULL);	if( nerrnum<0 )	{		return -3;	}	if (pFormatCtx->nb_streams >0)	{		if(pFormatCtx->duration >0)		{			VideoLen= pFormatCtx->duration;		}		else		{			VideoLen= -4;		}	}	else	{		VideoLen = -5;	}	avformat_close_input(&pFormatCtx);	avformat_free_context(pFormatCtx);	return VideoLen/1000000;           //ffmpeg返回的是微秒,转换成秒}


主函数时记得要初始化av_register_all();




int main(int argc, char* argv[]){	av_register_all();		if(NULL==argv[1])	{		cout<<"No such Input file"<<endl;		return -1;	}	float videolen=getvideolen(argv[1]);	cout<<"videolen="<<videolen<<endl;	return 0;}




如果出现错误 fatal error C1189: #error :  missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS

 

https://img1.sycdn.imooc.com//5b5309810001821805630425.jpg

 

 

在common.h文件头部加入以下定义


#ifdef __cplusplus
#define __STDC_CONSTANT_MACROS
#ifdef _STDINT_H
#undef _STDINT_H
#endif
# include "stdint.h"
#endif


#ifndef INT64_C
#define INT64_C(c) (c ## LL)
#define UINT64_C(c) (c ## ULL)
#endif

 


运行截图:

https://img1.sycdn.imooc.com//5b53098a00016fcf04830068.jpg



完整项目工程包下载:http://download.csdn.net/download/sm9sun/9687608


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消