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 ...
随机推荐
- gem 安装问题
错误提示: ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) SSL_connect returned=1 errno=0 ...
- 响应式web设计(一)
很多网页都是基于网格设计的,这说明网页是按列来布局的. 原理就是讲网页分成十二列,每列的宽度是8.33%,元素的宽度,用几列来定义,正是因为这一点,才可以做到响应,就是随着窗口宽度的变化,给元素分配不 ...
- Program Hyundai i20 Smart Key with VVDI & Xtool X100 Pad2
How-to: generate and program Hyundai i20 smart key with VVDI Mini Key Tool and XTOOL X100 PAD2. Step ...
- java 日志体系(四)log4j 源码分析
java 日志体系(四)log4j 源码分析 logback.log4j2.jul 都是在 log4j 的基础上扩展的,其实现的逻辑都差不多,下面以 log4j 为例剖析一下日志框架的基本组件. 一. ...
- 服务管理之httpd
目录 1. httpd简介 2. httpd版本 2.2 httpd-2.4新增的模块 3. httpd基础 3.1 httpd自带的工具程序 3.2 rpm包安装的httpd程序环境 3.3 web ...
- 使用WinMerge作为git的Merge工具
使用WinMerge作为git的Merge工具 我比较喜欢使用免费的WinMerge作为diff和merge工具,虽然TortoiseGit也自己带了TortoiseGitMerge工具,但是使用起来 ...
- DWR使用总结
这两天学了下DWR,现在总结一下. DWR是方便使用AJAX连接JS和JAVA的的一个框架,把服务器端 Java 对象的方法公开给 JavaScript 代码. 如果是用dwr2.0的jar包,还 ...
- 死锁问题------------------------INSERT ... ON DUPLICATE KEY UPDATE*(转)
前言 我们在实际业务场景中,经常会有一个这样的需求,插入某条记录,如果已经存在了则更新它如果更新日期或者某些列上的累加操作等,我们肯定会想到使用INSERT ... ON DUPLICATE K ...
- flex弹性盒子布局
一.在需要使用弹性盒子的容器上添加属性:display:flex 或者 display:inline-flex; 二.在父容器上添加flex-direction设置子元素主轴方向: 不写默认值是X轴从 ...
- firebug定位工具很强大
firebug这个工具很强大,如果实在找不到自己想要的元素,就安装firebug这个定位工具妥妥的