c/c++语言开发共享如何使用ffmpeg的c语言sdk实现对文件夹的操作

重要函数 打开文件夹: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, "找不到文件夹%sn", 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: %sn", 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`

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/600527.html

(0)
上一篇 2021年5月9日
下一篇 2021年5月9日

精彩推荐