一步一步学习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);