ffmpeg文件与目录操作

ffmpeg文件操作

文件操作所在的头文件libavformat/avformat.h

文件的删除与重命名

  • avpriv_io_delete()
  • avpriv_io_move() 重命名和移动目录

我们看下使用

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


void deleteFile(){
    char* filename = "./test_file.txt";
    int result = avpriv_io_delete(filename);
    if(result == 0){
        av_log(NULL, AV_LOG_ERROR, "delete file success\n");
    }else{
        av_log(NULL, AV_LOG_ERROR, "delete file fail\n");
    }
}

void moveFile(){
    char* filename = "./dst.txt";
    char* dst_filename = "/Users/yuanxuzhen/study/mac/ffmpeg_demo/dst.txt";
    int result = avpriv_io_move(filename, dst_filename);
    if(result == 0){
        av_log(NULL, AV_LOG_ERROR, "move file success\n");
    }else{
        av_log(NULL, AV_LOG_ERROR, "move file fail\n");
    }
}

int main(int argc, char * argv[]){
    av_log_set_level(AV_LOG_ERROR);
    deleteFile();
    moveFile();
    return 0;
}

 

ffmpeg 目录操作相关

目录操作

  • avio_open_dir()  打开目录
  • avio_close_dir() 关闭目录
  • avio_read_dir() 读目录到entry
  • avio_free_directory_entry() 释放entry

  • AVIODirContext  目录上下文,读,释放都要使用到这个context

  • AVIODirEntry  目录项目上下文

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

int main(int argc, char *argv[])
{
    char *dir = "./";
    int ret = 0;
    AVIODirContext *av_dir_context = NULL;
    AVIODirEntry *av_dir_entry = NULL;
    av_log_set_level(AV_LOG_INFO);
    ret = avio_open_dir(&av_dir_context, dir, NULL);
    if (ret < 0)
    {
        av_log(NULL, AV_LOG_ERROR, "can't open dir: %s\n", av_err2str(ret));
        goto __ERROR;
    }
    while (1)
    {
        ret = avio_read_dir(av_dir_context, &av_dir_entry);
        if (ret < 0)
        {
            av_log(NULL, AV_LOG_ERROR, "can't read dir: %s\n", av_err2str(ret));
            goto __ERROR;
        }
        if(!av_dir_entry){
            break;
        }
        av_log(NULL, AV_LOG_INFO, "%-12"PRId64"%s\n", av_dir_entry->size, av_dir_entry->name);
        avio_free_directory_entry(&av_dir_entry);
    }

__ERROR:
    if (av_dir_context != NULL)
    {
        avio_close_dir(&av_dir_context);
    }
    return 0;
}

 

av_log(NULL, AV_LOG_INFO, "%-12"PRId64"%s\n", av_dir_entry->size, av_dir_entry->name);

"%-12"PRId64"%s\n"  实际上是 "%-12lld%s"

%lld 输出64位的数字

%-12lld 做对齐,最少输出12位,不够12位右侧补0

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值