FFmpeg 提供了丰富的API供我们使用,下面我们来讲述一下文件操作相关的API:

  • FFmpeg 删除文件:avpriv_io_delete()
  • FFmpeg 重命名文件:avpriv_io_move()
  • FFmpeg 打开目录:avio_open_dir()
  • FFmpeg 读取目录:avio_read_dir();
  • FFmpeg 关闭目录:avio_close_dir()

使用FFmpeg文件操作API实现删除和重命名的实例代码如下:

// FFmpeg 删除文件操作
void ffmpegDelFile() {
int ret;
ret = avpriv_io_delete("1.txt"); // 在项目目录下创建的文件(测试时需要创建好)
printf("Del File Code : %d \n", ret);
if (ret < ) {
av_log(NULL, AV_LOG_ERROR, "Failed to delete file \n");
} else {
av_log(NULL, AV_LOG_INFO, "Delete File Success!\n ");
}
} // FFmpeg 重命名或移动文件
void ffmpegMoveFile(char* src, char* dst) {
int ret;
ret = avpriv_io_move(src, dst);
printf("Move File Code : %d \n", ret);
// 重命名时,如果文件不存在,ret也会0
if (ret < ) {
av_log(NULL, AV_LOG_ERROR, "Failed to Move File %s!\n ", src);
} else {
av_log(NULL, AV_LOG_INFO, "Success Move File %s!\n", src);
}
}

使用FFmpeg文件操作API实现读取文件目录及输出文件目录List的相关代码如下:

// FFmpeg 目录操作
void ffmpegDir() { int ret; // 上下文
AVIODirContext *dirCtx = NULL;
AVIODirEntry *dirEntry = NULL; // 注意Windows下会返回-40,也就是Function not implement,方法未实现,也就是说windows下不支持此方法
ret = avio_open_dir(&dirCtx, "include", NULL); if (ret < ) {
// 输出错误日志
printf("cant open dir,msg = %s", av_err2str(ret));
return;
} av_log(NULL, AV_LOG_INFO, "Open Dir Success!"); while (){
ret = avio_read_dir(dirCtx, &dirEntry);
if (ret < ) {
printf("cant read dir : %s", av_err2str(ret));
// 防止内存泄漏
goto __failed;
}
av_log(NULL, AV_LOG_INFO, "read dir success");
if (!dirEntry) {
break;
}
printf("Entry Name = %s", dirEntry->name);
// 释放资源
avio_free_directory_entry(&dirEntry);
}
// 释放资源
__failed:
avio_close_dir(&dirCtx);
}

FFmpeg开发实战(二):FFmpeg 文件操作的更多相关文章

  1. C语言第十二讲,文件操作.

    C语言第十二讲,文件操作. 一丶文件操作概述 在操作系统中,我们的文档都称为文件.操作系统也为我们提供了接口进行操作.不同语言都是使用的相同的接口,只不过封装的上层接口不一样 操作文件的步骤 打开文件 ...

  2. 《Windows内核安全与驱动开发》4.1 文件操作

    <Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发>4.1 文件操作 从 C:\a.txt 中读取一部分内容并利用 DbgPrin ...

  3. FFmpeg开发实战(一):FFmpeg 打印日志

    在Visual Studio 开发(二):VS 2017配置FFmpeg开发环境一文中,我们配置好了FFmpeg的开发环境,下面我们开始边实战,边学习FFmpeg. 首先,我们要学习的就是FFmpeg ...

  4. ansible 实战项目之文件操作(二)

    一,前言 如果没有安装好的话看我以前的贴子哦!! 上次安装已经确定通了,所以下面步骤应该是完全ok的 特点: (1).轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可: (2 ...

  5. 巨蟒python全栈开发-第8天 文件操作

    一.文件操作 今日大纲: 1.文件操作->open() open 打开 f=open(文件路径,mode='模式',encoding='编码格式') #python最最底层操作的就是bytes ...

  6. 《Java核心技术卷二》笔记(二)文件操作和内存映射文件

    文件操作 上一篇已经总结了流操作,其中也包括文件的读写.文件系统除了读写以为还有很多其他的操作,如复制.移动.删除.目录浏览.属性读写等.在Java7之前,一直使用File类用于文件的操作.Java7 ...

  7. python学习笔记(二)文件操作和集合

    集合: 集合也是一种数据类型,一个类似列表东西,它的特点是无序的,不重复的,也就是说集合中是没有重复的数据 集合的作用: 1.它可以把一个列表中重复的数据去掉,而不需要你再写判断 2.可以做关系测试, ...

  8. FFmpeg开发实战(六):使用 FFmpeg 将YUV数据编码为视频文件

    本文中实现的一个小功能是把一个YUV原始视频数据(时间序列图像)经过h264编码为视频码流,然后在使用mp4封装格式封装. 编码&封装的流程图如下: 使用ffmpeg编码流程: 1.首先使用a ...

  9. FFmpeg开发实战(五):FFmpeg 抽取音视频的视频数据

    如何使用FFmpeg抽取音视频的视频数据,代码如下: // FFmpegTest.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include ...

随机推荐

  1. 十七、Java中数组常见的几种排序方法!

    转载自:https://www.cnblogs.com/bekeyuan123/p/6891875.html 数组的定义: // 3种定义方式 int[] arr = new int[5]; int[ ...

  2. ThinkPHP5 与ThinkPHP3.2公共函数放置位置

    最初使用ThinkPHP3..3的时候,我们自己定义的公共函数常常放置于 \Common\function.php 由于最近准备重新捡起微信开发,准备用ThinkPHP5进行微信公众号开发,使用到公共 ...

  3. 14. Redis配置统计字典

    14. Redis配置统计字典14.1 info系统状态说明14.1.1 命令说明14.1.2 详细说明14.2 standalone配置说明和分析14.2.1 总体配置14.2.2 最大内存及策略1 ...

  4. Skipping acquire of configured file ···doesn't support architecture 'i386' acquire of configured file

    系统更新的时候报错: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'http://rep ...

  5. linux常用命令简介

    不管是测试还是开发,平时或多或少都要用到Linux命令,下面就把平时必用的一些命令简单总结哈,快学快用 1.   ls : 列举当前目录下文件.子目录的名字,如图举例: (1)  ls  -l  : ...

  6. 第二阶段第七次spring会议

    昨天我将尝试对软件进行添加搜索引擎的界面. private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEvent ...

  7. Jackson注解简介

    1.注解: @JsonInclude(JsonInclude.Include.NON_NULL) 1.如果放在属性上,如果该属性为NULL则不参与序列化 ;2.如果放在类上,那对这个类的全部属性起作用 ...

  8. 返回上一页 html A标记代码

    <a class="sjad" href="#" onClick="javascript:history.back(-1);"> ...

  9. 最大熵与最大似然,以及KL距离。

    DNN中最常使用的离散数值优化目标,莫过于交差熵.两个分布p,q的交差熵,与KL距离实际上是同一回事. $-\sum plog(q)=D_{KL}(p\shortparallel q)-\sum pl ...

  10. [少数派]如何学习Git

    用玩游戏的方式学习 Git 目录 为什么要学习 Git 怎么学习 Git Learn Git Branching 其他学习资源 用游戏的方式来学习,是一种有趣而高效的方式. 从刚接触电脑时的打字练习软 ...