一步一步学习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); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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