如何使用ffmpeg的c语言sdk实现对文件夹的操作
重要函数
- 打开文件夹: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实现对文件夹的操作的更多相关文章
- 用C语言实现统计一个文件夹中各种文件的比例
<UNIX环境高级编程>中的程序清单4-7就介绍了如何实现递归地统计某个目录下面的文件!我刚开始看过它的代码后,觉得照着敲太没意思了,所以就合上书自己写了一遍!为此还写了一篇博文,这是博文 ...
- ffmpeg使用C语言sdk实现抽取视频中的视频数据
主要使用函数 特征码:Start code 解码的一些视频参数,分辨率和帧率:SPS/PPS ffmpeg获取SPS/PPS:codec->extradata 实例 #include <s ...
- FFmpeg调用c语言SDK实现日志的打印
日志文件的三大步 // 导入头文件 #include <libavutil/log.h> // 设置日志级别 av_log_set_level(AV_LOG_DEBUG); //DEBUG ...
- Flex SDK包内文件夹内容说明
打开SDK目录,让我们看看SDK中都包含了哪些内容: ant包含Flex对Ant的支持库,JAR和Java源码都有,方便我们基于Ant完成对项目的构建 asdoc基于ASDOC我们可以很方便的生成代码 ...
- SDK文件夹下内容介绍
Platform-Tools: 这是 adb, fastboot 等工具包.把解压出来的 platform-tools 文件夹放在 android sdk 根目录下,并把 adb所在的目录添加到系统 ...
- windows 下FFMPEG的编译方法 附2012-9-19发布的FFMPEG编译好的SDK下载
经过一晚上加一上午的奋斗,终于成功编译出了最新版的FFMPEG,下面是我编译的心得,因为是最新的,应该会对大家有用,编译的FFMPEG的版本是0.11.2,2012-09-19新发布的版本 平台:WI ...
- 从微信SDK看ProtoBuffer文件的生成
前言 Protocol Buffers (下面简称PB)是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它可用于通讯协议.数据存储等领域的语言无 ...
- Swift3.0语言教程字符串与文件的数据转换
Swift3.0语言教程字符串与文件的数据转换 Swift3.0语言教程字符串与文件的数据转换,如果想要对字符串中的字符进行永久保存,可以将字符串中的字符写入到文件中.当然,开发者也可以将写入的内容进 ...
- 【Go语言】集合与文件操作
本文目录 1.数据集合的主要操作 1_1.字典的声明 1_2.字典的初始化和创建 1_3.字典的访问和操作 1_4.其他类型的数据集 2.文件操作 2_1.文件操作概述os包和path包 2_2.文件 ...
随机推荐
- 控制反转(IOC)和依赖注入(DI)
控制反转(IOC)和依赖注入(DI)IoC(Inversion of Control,控制反转) 是Spring 中一个非常非常重要的概念,它不是什么技术,而是一种解耦的设计思想.它的主要目的是借助于 ...
- JenKins docker 集群
//tag 桉树有时间来搞 **阿斯蒂 啊 阿斯蒂
- finally语句块一定会被执行吗
finally语句块一定会被执行吗? 答案: 不一定 1. 发生异常的代码必须在try 代码块中,才有可能被执行 public class MyTest { public static void ma ...
- Vue-footer始终置底
需求:当页面高度不足一屏时需要footer固定显示在页面底部,而页面内容超过一屏时需要footer紧跟在页面内容的最后. 思路:通过获取 网页可见区域高度:document.body.clientHe ...
- PLSQL用户登录时报错: no listener
报错原因是因为服务没有开启,找到oracle的相应服务开启即可.
- U2000解决备份:服务器不可达、FTP/TFTP/SFTP IP地址与网管地址不一致
只需要将一下几点设置到位这些问题基本解决: 设置->网元软件管理->FTP设置 如果你的U2000服务器和OLT都在一个内网,那么就IP1和IP2就都输入U2000服务器的内网IP,否则按 ...
- 「NOI2016」区间
传送门 Luogu 解题思路 对于选出的区间,我们可以直接用线段树维护区间内单点被覆盖次数最大值. 那么解题重心便落在了选取方式上. 为了让最大值最小,考虑尺取,不能二分,降低效率而且不好写. 先将区 ...
- python中os.path.abspath与os.path.realpath 区别
python中os.path.abspath与os.path.realpath 区别cd /homemkdir amkdir btouch a/1.txtln -s /home/a/1.txt /ho ...
- Bugku - CTF加密篇之滴答~滴
滴答~滴 答案格式KEY{xxxxxxxxx}
- IoT协议LwM2M MQTT与CoAP
IoT协议LwM2M MQTT与CoAP 一.MQTT 1.概述: MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议, ...