重要函数

  • 打开文件夹: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`

如何使用ffmpeg的c语言sdk实现对文件夹的操作的更多相关文章

  1. 用C语言实现统计一个文件夹中各种文件的比例

    <UNIX环境高级编程>中的程序清单4-7就介绍了如何实现递归地统计某个目录下面的文件!我刚开始看过它的代码后,觉得照着敲太没意思了,所以就合上书自己写了一遍!为此还写了一篇博文,这是博文 ...

  2. ffmpeg使用C语言sdk实现抽取视频中的视频数据

    主要使用函数 特征码:Start code 解码的一些视频参数,分辨率和帧率:SPS/PPS ffmpeg获取SPS/PPS:codec->extradata 实例 #include <s ...

  3. FFmpeg调用c语言SDK实现日志的打印

    日志文件的三大步 // 导入头文件 #include <libavutil/log.h> // 设置日志级别 av_log_set_level(AV_LOG_DEBUG); //DEBUG ...

  4. Flex SDK包内文件夹内容说明

    打开SDK目录,让我们看看SDK中都包含了哪些内容: ant包含Flex对Ant的支持库,JAR和Java源码都有,方便我们基于Ant完成对项目的构建 asdoc基于ASDOC我们可以很方便的生成代码 ...

  5. SDK文件夹下内容介绍

    Platform-Tools: 这是 adb, fastboot 等工具包.把解压出来的 platform-tools 文件夹放在 android sdk 根目录下,并把 adb所在的目录添加到系统 ...

  6. windows 下FFMPEG的编译方法 附2012-9-19发布的FFMPEG编译好的SDK下载

    经过一晚上加一上午的奋斗,终于成功编译出了最新版的FFMPEG,下面是我编译的心得,因为是最新的,应该会对大家有用,编译的FFMPEG的版本是0.11.2,2012-09-19新发布的版本 平台:WI ...

  7. 从微信SDK看ProtoBuffer文件的生成

    前言 Protocol Buffers (下面简称PB)是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它可用于通讯协议.数据存储等领域的语言无 ...

  8. Swift3.0语言教程字符串与文件的数据转换

    Swift3.0语言教程字符串与文件的数据转换 Swift3.0语言教程字符串与文件的数据转换,如果想要对字符串中的字符进行永久保存,可以将字符串中的字符写入到文件中.当然,开发者也可以将写入的内容进 ...

  9. 【Go语言】集合与文件操作

    本文目录 1.数据集合的主要操作 1_1.字典的声明 1_2.字典的初始化和创建 1_3.字典的访问和操作 1_4.其他类型的数据集 2.文件操作 2_1.文件操作概述os包和path包 2_2.文件 ...

随机推荐

  1. Python解决RSA加密

    最近爬个网站需要用发现密码是通过RSA加密的,因此找网上python加密例子,发现都没有一个比较完整的demo so,自己写一个吧~ 首先,安装相应的库: 1. pyCrypto : pip inst ...

  2. CSS3实现魔方动画

    本文将借助css3实现魔方动画效果,设计思路如下: HTML方面采用六个div容器形成六个立方面: CSS方面采用transform-style: preserve-3d;形成三维场景:transfo ...

  3. composer基本命令

    安装:https://getcomposer.org/download/ { "require":{ // "厂商/类库":"版本号", & ...

  4. Python:集合类型

    概念 无序的,不可随机访问的,不可重复的元素集合 与数学中集合的概念类似,可对其进行相关的运算 集合分为可变集合和非可变集合:set 和 frozenset 定义 可变集合 s = {x1, x2, ...

  5. CSS3绘制不规则图形,代码收集

    三角形系列(三角形.倒三角.左三角.右三角.左上三角.右上三角.左下三角.右下三角) 主要用到的是:宽度高度设置为0, border的各个边的设置(各个边的透明或不透明): .triangle-up ...

  6. 吴裕雄 python 神经网络——TensorFlow训练神经网络:不使用指数衰减的学习率

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data INPUT_NODE = 784 ...

  7. java面试(一)

    一.java基础 1.JDK和JRE的区别? JDK是java的开发环境,JRE是java的运行环境,即编写java程序就一定需要JDK,只是运行java程序只要JRE就足够了. 2.java中==和 ...

  8. 【PAT甲级】1045 Favorite Color Stripe (30 分)(DP)

    题意: 输入一个正整数N(<=200),代表颜色总数,接下来输入一个正整数M(<=200),代表喜爱的颜色数量,接着输入M个正整数表示喜爱颜色的编号(同一颜色不会出现两次),接下来输入一个 ...

  9. ES建立索引步骤, 1,index 2.mapping 3,别名

    1.建立索引PUT /index_trans_detail 2.建立mappingPOST /index_trans_detail/type_trans_detail/_mapping{ " ...

  10. 工具 - VS Code

    杂项 1. 主题 brackets light pro, One Monokai theme 2. directory tree indent guidelines, directory vertic ...