FFmpeg开发实战(二):FFmpeg 文件操作
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 文件操作的更多相关文章
- C语言第十二讲,文件操作.
C语言第十二讲,文件操作. 一丶文件操作概述 在操作系统中,我们的文档都称为文件.操作系统也为我们提供了接口进行操作.不同语言都是使用的相同的接口,只不过封装的上层接口不一样 操作文件的步骤 打开文件 ...
- 《Windows内核安全与驱动开发》4.1 文件操作
<Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发>4.1 文件操作 从 C:\a.txt 中读取一部分内容并利用 DbgPrin ...
- FFmpeg开发实战(一):FFmpeg 打印日志
在Visual Studio 开发(二):VS 2017配置FFmpeg开发环境一文中,我们配置好了FFmpeg的开发环境,下面我们开始边实战,边学习FFmpeg. 首先,我们要学习的就是FFmpeg ...
- ansible 实战项目之文件操作(二)
一,前言 如果没有安装好的话看我以前的贴子哦!! 上次安装已经确定通了,所以下面步骤应该是完全ok的 特点: (1).轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可: (2 ...
- 巨蟒python全栈开发-第8天 文件操作
一.文件操作 今日大纲: 1.文件操作->open() open 打开 f=open(文件路径,mode='模式',encoding='编码格式') #python最最底层操作的就是bytes ...
- 《Java核心技术卷二》笔记(二)文件操作和内存映射文件
文件操作 上一篇已经总结了流操作,其中也包括文件的读写.文件系统除了读写以为还有很多其他的操作,如复制.移动.删除.目录浏览.属性读写等.在Java7之前,一直使用File类用于文件的操作.Java7 ...
- python学习笔记(二)文件操作和集合
集合: 集合也是一种数据类型,一个类似列表东西,它的特点是无序的,不重复的,也就是说集合中是没有重复的数据 集合的作用: 1.它可以把一个列表中重复的数据去掉,而不需要你再写判断 2.可以做关系测试, ...
- FFmpeg开发实战(六):使用 FFmpeg 将YUV数据编码为视频文件
本文中实现的一个小功能是把一个YUV原始视频数据(时间序列图像)经过h264编码为视频码流,然后在使用mp4封装格式封装. 编码&封装的流程图如下: 使用ffmpeg编码流程: 1.首先使用a ...
- FFmpeg开发实战(五):FFmpeg 抽取音视频的视频数据
如何使用FFmpeg抽取音视频的视频数据,代码如下: // FFmpegTest.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include ...
随机推荐
- Java并发编程之并发容器
解决并发情况下的容器线程安全问题的.给多线程环境准备一个线程安全的容器对象. 线程安全的容器对象: Vector, Hashtable.线程安全容器对象,都是使用 synchronized 方法实现的 ...
- 计算C#程序执行时间
static void SubTest() { DateTime beforDT = System.DateTime.Now; //耗时巨大的代码 ...
- Oracle 存储过程笔记.
业务说明: 主要用于计算采购加权平均价.入参为年份和月份,首先判断输入的年月是否已经结账,如果已经结账就将所有物料和供应商的采购加权平均价返回. 要点说明: 1.如何在存储过程中定义临时表 答:ora ...
- localhost换成127.0.0.1和本机IP打不开本地项目了的问题
点击桌面右下角的小三角, iis express右键—>显示所有应用程序—>点击网站名称,配置文件路径,找到配置文件,以记事本打开, 按照configuration--system.app ...
- java常用集合浅层解析-面试必备
ArrayList 1.动态数组 2.线程不安全 3.存储空间连续 4.查询快,添加删除慢 构造方法 /** + Shared empty array instance used for defaul ...
- shell脚本实现svn目录同步和提交
#/bin/bash set -x #提交变更rpm到svn function commit_to_svn() { target_svn_dir=$1 #新增rpm至svn命令 add_to_svn= ...
- js二分算法排序
var arr = [1,2,3,5,10,15,23,35,67,76,78,89,100];var len = arr.length;for (var i = 1; i < len; i++ ...
- 【转】TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端
[转]TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端).UDP客户端 目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP ...
- 2018年最新搜索引擎转跳JavaScript代码(竞价广告专用)
JavaScript代码如下,请放在script标签内: eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.r ...
- PyCharm 安装教程(Windows)
python教程 http://www.runoob.com/python3/python3-basic-syntax.html PyCharm 是一款功能强大的 Python 编辑器,具有跨平台性, ...