一步一步学习ffmpeg编程:Meta信息提取

在真正的实战操作中,总会遇到这样或那样的问题

这不,马上就来了

1. 在C++中调用av_err2str(),提示error C2143: 语法错误 : 缺少“)”(在“{”的前面)

    原因:C++无法直接调用(char[AV_ERROR_MAX_STRING_SIZE]){0}

    解决方案:封装一个相应的功能

    

inline char* wrap_av_err2str(int errnum)
{
	static char str[AV_ERROR_MAX_STRING_SIZE];
	memset(str,0, sizeof(str));
	return av_make_error_string(str,AV_ERROR_MAX_STRING_SIZE,errnum);
}

2.程序流程

av_register_all:初始化所有组件,只有调用了该函数,才能使用复用器和编解码器
avformat_open_input:打开多媒体文件
av_dump_format:打印关于输入或输出格式的详细信息
avformat_close_input:关闭多媒体文件

 

3.代码

     av_log_set_level(AV_LOG_INFO);
	av_register_all();
	AVFormatContext *fmt_ctx = NULL;

	std::string strFile = "G:/ffmpeg/input.mp4";

	int ret = avformat_open_input(&fmt_ctx, strFile.c_str(), NULL, NULL);
	if (ret < 0)
	{
		av_log(NULL, AV_LOG_ERROR, "Can't open file: %s\n", wrap_av_err2str(ret));
		return false;
	}

	av_dump_format(fmt_ctx, 0, strFile.c_str(), 0);

	avformat_close_input(&fmt_ctx);

  

    

posted @ 2021-03-16 13:37  unicornsir  阅读(468)  评论(0)    收藏  举报