如何使用ffmpeg的c语言sdk实现对文件夹的操作
程序员文章站
2023-09-28 23:09:29
重要函数 打开文件夹:avio_open_dir() 读取文件夹:avio_read_dir() 关闭文件夹:avio_close_dir() 结构体, 操作目录的上下文:AVIODirContext() 目录项,用于存放文件名,文件大小等信息:AVIODirEntry() 实例 vim ffmpe ......
重要函数
- 打开文件夹:avio_open_dir()
- 读取文件夹:avio_read_dir()
- 关闭文件夹:avio_close_dir()
- 结构体, 操作目录的上下文:aviodircontext()
- 目录项,用于存放文件名,文件大小等信息:aviodirentry()
实例
vim ffmpeg_list.c
#include <libavutil/log.h> #include <libavformat/avformat.h> int main(int arc, char *argv[]) { int ret; // 文件内容上下文 aviodircontext *ctx = null; // 文件信息上下文 aviodirentry *entry = null; // 设置日志等级 av_log_set_level(av_log_info); // 打开文件夹, ctx:上下文, ./当前文件夹 ret = avio_open_dir(&ctx, "./", null); if (ret < 0){ av_log(null, av_log_error, "找不到文件夹%s\n", av_err2str(ret)); return -1; } while(1){ // 读文件夹操作 ret = avio_read_dir(ctx, &entry); // 如果读取失败 if (ret < 0){ av_log(null, av_log_error, "cant read dir: %s\n", av_err2str(ret)); // return -1; 这里直接退出可能会忘记文件的退出,照成内存泄漏,使用goto goto __fail; } // 如果读取成功,需要判断一下entry if(!entry){ break; } // 打印文件信息, prid64 是 64的宏信息 av_log(null, av_log_info, "%12"prid64" %s \n", entry->size, entry->name); // 要进行entry的释放 avio_free_directory_entry(&entry); } // 关闭文件夹 __fail: avio_close_dir(&ctx); return 0; }
编译:
clang -g -o list ffmpeg_list.c `pkg-config --libs liavformat libavutil`
下一篇: GO 单例模式