当前位置: 首页 > news >正文

FFmpeg 初级操作—打印日志,文件目录操作

文章目录

    • 日志输出操作
    • 文件的删除与重命名
    • 操作目录实现
      • 实现简单的ls命令—代码实现

日志输出操作

FFmpeg 提供了一套LOG操作,基本上和printf用法差不多,如下方所示

#include<stdio.h>
#include<libavutil/log.h>
int main(int argc, char * argv[]){av_log_set_level(AV_LOG_DEBUG);//基本上可以当作 printf来用av_log(NULL,AV_LOG_INFO,"hello ffmpeg log %d\n",123);return 0;
}

文件的删除与重命名

avpriv_io_delete()

这个函数的作用是用来删除文件的,其具体实现可能会依赖于FFmpeg当前的环境和构建选项。它通常在FFmpeg的内部代码中使用,用于处理一些特定的文件删除需求,可能会涉及更底层的文件系统操作或者特定的编解码器功能。

avpriv_io_remove()

参数

  • const char *url: 需要删除的文件的路径。

返回值

  • 成功删除文件时返回 0
  • 如果删除文件失败,返回一个负数的错误码。

操作目录实现

相关操作API:

1.avio_open_dir

参数

  • AVIODirContext **s:
    • 指向目录上下文的指针。该指针在函数成功返回后会指向一个有效的 AVIODirContext,用于后续的目录操作。
  • const char *url:
    • 要打开的目录的路径。可以是本地文件系统路径,也可以是支持的协议路径。
  • AVDictionary **options:
    • 选项字典,包含用于打开目录的其他选项。可以为 NULL 表示没有额外选项。常用于传递特定协议的参数。

返回值

  • 成功时返回 0
  • 失败时返回负数的错误码。

2.int avio_read_dir(AVIODirContext *s, AVIODirEntry **next);

参数

  • AVIODirContext *s:
    • 目录上下文指针。这个指针是通过之前调用 avio_open_dir 获得的。
  • AVIODirEntry **next:
    • 指向指针的指针。这个指针在成功读取后会指向一个有效的 AVIODirEntry,表示目录中的下一个条目。

返回值

  • 成功时返回 0,并将 next 指向一个新分配的 AVIODirEntry 结构体。
  • 目录读取完毕时返回 0,并将 next 设置为 NULL
  • 失败时返回负数的错误码。

注: AVIODirEntry 结构体 存放文件名,文件大小等相关属性

typedef struct AVIODirEntry {char *name;                           /**< Filename */int type;                             /**< Type of the entry */int utf8;                             /**< Set to 1 when name is encoded with UTF-8, 0 otherwise.Name can be encoded with UTF-8 even though 0 is set. */int64_t size;                         /**< File size in bytes, -1 if unknown. */int64_t modification_timestamp;       /**< Time of last modification in microseconds since unixepoch, -1 if unknown. */int64_t access_timestamp;             /**< Time of last access in microseconds since unix epoch,-1 if unknown. */int64_t status_change_timestamp;      /**< Time of last status change in microseconds since unixepoch, -1 if unknown. */int64_t user_id;                      /**< User ID of owner, -1 if unknown. */int64_t group_id;                     /**< Group ID of owner, -1 if unknown. */int64_t filemode;                     /**< Unix file mode, -1 if unknown. */
} AVIODirEntry;
  1. avio_close_dir(&ctx);

关闭目录,释放相关资源

实现简单的ls命令—代码实现

#include <libavformat/avio.h>
#include <libavutil/log.h>int main() {AVIODirContext *ctx = NULL;AVIODirEntry *entry = NULL;int ret;// 打开目录if ((ret = avio_open_dir(&ctx, "./", NULL)) < 0) {av_log(NULL, AV_LOG_ERROR, "Cannot open directory: %s\n", av_err2str(ret));return ret;}// 读取目录项while (1) {if ((ret = avio_read_dir(ctx, &entry)) < 0) {av_log(NULL, AV_LOG_ERROR, "Cannot read directory: %s\n", av_err2str(ret));break;}if (!entry)break;av_log(NULL, AV_LOG_INFO, "Name: %s, Size: %" PRId64 "\n", entry->name, entry->size);avio_free_directory_entry(&entry); // 释放目录项}// 关闭目录avio_close_dir(&ctx);return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数学基础 -- 函数的连续性
  • 帕金森患者营养小贴士
  • 昇思25天学习打卡营第17天|SSD目标检测
  • Apache AGE 安装部署
  • 如何在 SwiftUI 中开发定制 MapKit 功能
  • 如何在 Windows 10 上恢复未保存的 Word 文档
  • 机器学习——关于极大似然估计法的一些个人思考
  • unity使用 MQTT复现plant simulate仿真
  • Git详解
  • 安防管理平台LntonCVS视频汇聚融合云平台智慧火电厂安全生产管理应用方案
  • 数据模型-ER图在数据模型设计中的应用
  • 数据无忧:Ubuntu 系统迁移备份全指南
  • 汇川CodeSysPLC教程03-2-14 与HMI通信
  • Java泛型的定义与运用
  • Linux | 安装lb-toolkits 1.2.4库
  • 分享一款快速APP功能测试工具
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 2019年如何成为全栈工程师?
  • Apache Zeppelin在Apache Trafodion上的可视化
  • CentOS6 编译安装 redis-3.2.3
  • CSS 三角实现
  • jquery cookie
  • laravel 用artisan创建自己的模板
  • Linux链接文件
  • 初识 webpack
  • 大整数乘法-表格法
  • 简单实现一个textarea自适应高度
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 漂亮刷新控件-iOS
  • 前端相关框架总和
  • 前端自动化解决方案
  • 如何设计一个微型分布式架构?
  • 算法---两个栈实现一个队列
  • 新书推荐|Windows黑客编程技术详解
  • 在weex里面使用chart图表
  • ​【已解决】npm install​卡主不动的情况
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • ![CDATA[ ]] 是什么东东
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #微信小程序:微信小程序常见的配置传值
  • (35)远程识别(又称无人机识别)(二)
  • (SpringBoot)第二章:Spring创建和使用
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (回溯) LeetCode 131. 分割回文串
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (小白学Java)Java简介和基本配置
  • .NET Remoting学习笔记(三)信道
  • .NET 直连SAP HANA数据库
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • .Net面试题4
  • @EnableConfigurationProperties注解使用
  • @GetMapping和@RequestMapping的区别
  • @ModelAttribute注解使用