重要函式
- 打開檔案夾:avio_open_dir()
- 讀取檔案夾:avio_read_dir()
- 關閉檔案夾:avio_close_dir()
- 結構體, 操作目錄的背景關系:AVIODirContext()
- 目錄項,用于存放檔案名,檔案大小等資訊:AVIODirEntry()
實體
vim ffmpeg_list.c
#include <libavutil/log.h>
#include <libavformat/avformat.h>
int main(int arc, char *argv[])
{
int ret;
// 檔案內容背景關系
AVIODirContext *ctx = NULL;
// 檔案資訊背景關系
AVIODirEntry *entry = NULL;
// 設定日志等級
av_log_set_level(AV_LOG_INFO);
// 打開檔案夾, ctx:背景關系, ./當前檔案夾
ret = avio_open_dir(&ctx, "./", NULL);
if (ret < 0){
av_log(NULL, AV_LOG_ERROR, "找不到檔案夾%s\n", av_err2str(ret));
return -1;
}
while(1){
// 讀檔案夾操作
ret = avio_read_dir(ctx, &entry);
// 如果讀取失敗
if (ret < 0){
av_log(NULL, AV_LOG_ERROR, "Cant read dir: %s\n", av_err2str(ret));
// return -1; 這里直接退出可能會忘記檔案的退出,照成記憶體泄漏,使用goto
goto __fail;
}
// 如果讀取成功,需要判斷一下entry
if(!entry){
break;
}
// 列印檔案資訊, PRId64 是 64的宏資訊
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 0;
}
編譯:
clang -g -o list ffmpeg_list.c `pkg-config --libs liavformat libavutil`
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/54965.html
標籤:C
上一篇:c語言中的sizeof問題
