美文网首页
FFmpeg文件操作和目录操作

FFmpeg文件操作和目录操作

作者: 一叶知秋0830 | 来源:发表于2019-07-23 17:38 被阅读0次

一、删除文件和文件重命名

avpriv_io_delete里面的参数都是要删除或改名的文件路径,avpriv_io_move第一个参数是要改的文件路径,第二个参数是改名后的文件路径

#include <libavformat/avformat.h>

int main(int argc, char* argv[])
{
    int flag;
    // 删除文件
    flag = avpriv_io_delete("./111.txt");
    if(flag < 0){
    // 打印日志
    av_log(NULL,AV_LOG_ERROR,"文件删除失败\n");
    }else{
    av_log(NULL,AV_LOG_INFO,"文件删除成功\n");
    }
    // 文件重命名
    flag = avpriv_io_move("./aa.txt","./bb.txt");
    if(flag < 0){
        // 打印日志
        av_log(NULL,AV_LOG_ERROR,"文件改名失败\n");
    }else{
        av_log(NULL,AV_LOG_INFO,"文件改名成功\n");
    }       

    
    return 0;
}

编译命令:
注意pkg-config --libs --cflags libavformat表示通过pkg-config去查找libavformat库的路径,包裹它的不是单引号,是esc下面那个键。

clang -g -o file file.c `pkg-config --libs --cflags libavformat`

二、目录操作

目录操作主要是3个函数:
打开目录avio_open_dir()
读取文件avio_read_dir()
关闭目录avio_close_dir()

#include <libavutil/log.h>
#include <libavformat/avformat.h>


int main()
{
    int flag,cnt;

    AVIODirContext *ctx = NULL; // 定义上下文
    AVIODirEntry *entry = NULL; // 定义实体(目录下一个文件的信息是一个实体)

    // 设置日志级别
    av_log_set_level(AV_LOG_INFO);

    // 打开目录,第一个参数传入上下文指针的指针,第二个参数为目录路径
    // 这里传入&ctx给上下文分配一个空间
    flag = avio_open_dir(&ctx,"/Users/TING/Downloads/test",NULL);
    if(flag < 0){
       // av_err2str是将错误码转换成其对应的错误信息
        av_log(NULL,AV_LOG_ERROR,"打开目录失败%s\n",av_err2str(flag));
        // 打开失败后直接跳转到fail
        goto fail;
    }

    cnt = 0;
    // 循环遍历读取目录中的每一个entry
    while(1){
        // 读取目录的一个entry,这里传入entry指针的指针,给entry分配空间
        flag = avio_read_dir(ctx,&entry);
        if(flag < 0){
            av_log(NULL,AV_LOG_ERROR,"读取失败:%s\n",av_err2str(flag));
            // 释放entry的内存
            avio_free_directory_entry(&entry);
            goto fail;
        }
        // 如果entry为空表明已经遍历完了
        if(!entry){
            break;
        }

        // 打印entry详细信息
        av_log(NULL, AV_LOG_INFO, "%12"PRId64" %s\n",entry->size,entry->name);
      // 释放entry内存
        avio_free_directory_entry(&entry);
    }

fail:
    // 关闭目录(关闭目录就是释放内存,不释放会内存泄露)
    avio_close_dir(&ctx);
    return flag;
}

相关文章

  • FFmpeg文件操作和目录操作

    一、删除文件和文件重命名 avpriv_io_delete里面的参数都是要删除或改名的文件路径,avpriv_io...

  • 2 ffmpeg 简介

    1, bin 目录 ,存放可执行的程序 ffmpeg.exe 用于操作和转换多媒体的内容; ffplay.exe...

  • Linux 常用命令

    列举一些文件操作和系统命令常用的 文件、目录操作命令 ls 命令功能: 显示文件和目录的信息ls 以默认方式显示当...

  • mac 终端命令

    MacOS 常用终端命令大全: 目录操作 文件操作 选择操作 安全操作 编程操作 进程操作 时间操作 网络与通信操...

  • ffmpeg 操作目录

    实现ls命令 #include #include intmain(intargc,char*argv[]) { a...

  • FFmpeg多媒体文件处理

    一、FFmpeg初级开发介绍 FFmpeg初级开发内容1. FFmpeg日志使用和目录操作2. FFmpeg基本概...

  • 2018-02-11 mac 系统的中常见命令行教程

    mac 系统的中常见命令行教程 目录操作 文件操作 选择操作 安全操作 编程操作 进程操作 时间操作 网络与通信操...

  • C#操作FTP总结

    本文是对FTP相关操作,例如新建/删除目录、新建/删除文件、获取文件/目录列表等的总结,方便日后调用。 其实C#操...

  • FFmpeg初级开发(三)文件目录操作

    为了加深大家的印象,每篇FFmpeg初级开发的文章开头会出现FFmpeg的代码结构和初级开发我们的学习大纲,FFm...

  • Clion导入ffmpeg

    Clion导入ffmpeg 将ffmpeg库文件放入工程的根目录下1.png 修改CmakeLists.txt 文件

网友评论

      本文标题:FFmpeg文件操作和目录操作

      本文链接:https://www.haomeiwen.com/subject/enddcctx.html