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

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

这不,马上就来了

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

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

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

    

1
2
3
4
5
6
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.代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 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 @   unicornsir  阅读(424)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示