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. MySQL主主

    MySQL双主(主主)架构方案   在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果 ...

  2. 《Java从入门到精通》学习总结4

    1. 程序运行期间,大部分数据都在内存中进行操作,当程序结束时,这些数据将消失. 如果需要将数据永久保存,可使用文件输入流 / 文件输出流与指定的文件建立连接,将需要的数据永久保存到文件中. File ...

  3. mysql启动服务

    mysql.server start 启动mysql服务mysql.server stop 停止mysql服务 mysql密码:123456Az_

  4. PHP整理--PHP语法

    PHP是一门动态交互的计算机语言,动态交互都需要服务器; 我们所了解过的静态交互都有:html,css,js: 1.我们学习PHP需要服务器,当我们没有服务器的条件时,PHPstudy给我们提供了一个 ...

  5. 在Eclipse中导入web项目时的问题总结

    一.导入项目 在Project Explorer右击,import-->Existing Projects into Workspace,选择要导入的文件,Finish. 二.解决报错 (1)T ...

  6. Spring Cloud Eureka的集群配置(六)

    1.再次创建2个Eureka工程 工程名:microservicecloud-eureka-7002 工程名:microservicecloud-eureka-7003 2.pom.xml文件 < ...

  7. spring boot利用controller来测试写的类

    我们在开发spring boot应用程序的时候,往往需要测试某个写好的类,但是在测试的时候发现不太好测试,用Junit等测试框架,总是会报一些问题,大致是找不到配置文件以及无法利用spring创建的对 ...

  8. FTP做作业用到的知识点:

    FTP做作业用到的知识点: 一: os.path 模块下常用的用法 os.path.abspath(file) #返回的是.py文件的绝对路径(完整路径) os.path.dirname(file) ...

  9. pyadb关于python操作adb的资料

    3.最后adb命令由于是android的原生操作命令,支持实现的功能非常多.这里举几个pyapp里实现的功能例子:获取,修改手机当前使用的输入法(adb shell ime list),获取当前手机界 ...

  10. JavaSE 集合类HashSet保证自定义对象唯一性

    首先我们自定义Person类,只有姓名和年龄两个属性 class Person{ private String name ; private int age ; public Person(Strin ...