如何使用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.文件 ...
随机推荐
- Java将数据进行分组处理
将传人的数据进行分组,使用map保存每组的数据. /** * 将取出的数据进行分组 * @param list * @return */ public Map<Integer,Object> ...
- IIS-详解IIS中URL重写工具的规则条件(Rule conditions)
出处:https://shiyousan.com/post/635654920639643421 本文结合官方文档和相关示例,详细记录了在IIS中URL重写工具下的规则条件(Rule conditio ...
- Android学习06
从开始学习Android,已经第5天,今天我换了一种方式,去观望了观望别人以及大佬的博客园,今天来做一下对比和反思,以便为后期的努力方向做好更充足的准备.在这里不得不佩服一下大佬们的学习能力和自我控制 ...
- 【C语言】创建一个函数,利用该函数将字符串中的小写字母转换为大写字母
原理: 这类题目主要通过ASCII(美国信息交换标准代码)码差值实现,A对应ASCII码十进制数字是65,a对应ASCII码十进制数字是97,即大小写字母之间ASCII码差值为32,想要将大写字母转换 ...
- 从头学pytorch(五) 多层感知机及其实现
多层感知机 上图所示的多层感知机中,输入和输出个数分别为4和3,中间的隐藏层中包含了5个隐藏单元(hidden unit).由于输入层不涉及计算,图3.3中的多层感知机的层数为2.由图3.3可见,隐藏 ...
- python的空格和tab混用报错问题
python中的空格和tab键不能混用,如果则会报类似如下的错误: IndentationError: unindent does not match any outer indentation le ...
- ubuntu apache 通过端口新建多个站点
cd /etc/apache2/sites-available 最近的虚拟机没绑定域名,所以呢,就先用域名加端口新建几个站点用着 1. vim /etc/apapche2/apapche2.conf ...
- ES6-let声明变量
在es6中除了var还可以用let申明变量,并且建议使用let而不要再使用var,两者有以下区别: 1.let不能重复声明变量 var name = 'tom'; var name = 'jack'; ...
- 电源适配器DC插头规格
电源适配器 DC 插头的内径外径规格有 (单位为 MM) :2.0*0.72.35*0.72.35*1.12.5*0.73.5*1.13.5*1.354.0*1.75.5*2.15.5*2.54.75 ...
- OpenThreads库学习
在看STM32资料中看到STM32WB系列“双核无线微控制器配备双核无线微控制器(MCU)配备Bluetooth® 5.OpenThread和ZigBee®3.0连接技术,同时兼备超低功耗性能“不知道 ...