代码:
#include <libavutil/log.h>
#include <libavformat/avformat.h>
int main(int argc, char **argv){
int ret=0;
AVIODirContext *context = NULL;
AVIODirEntry *entry = NULL;
av_log_set_level(AV_LOG_DEBUG);
// 1.打开目录
ret = avio_open_dir(&context, "./", NULL);
if(ret <0){
av_log(NULL, AV_LOG_ERROR, "Can't open dir:%s\n",av_err2str(ret));
goto _End;
}
// 2.读取目录项
while(1){
ret = avio_read_dir(context, &entry);
if(ret <0){
av_log(NULL, AV_LOG_ERROR, "Can't read dir:%s\n", av_err2str(ret));
goto _End;
}
if(!entry) //读取到目录的最后一项后,没有内容可以读取
break;
av_log(NULL, AV_LOG_INFO, "%ld %s\n",// 输出目录项内容
entry->size,
entry->name);
// 3.释放目录项所占空间,防止內存泄露
avio_free_directory_entry(&entry);
}
_End:
// 4.关闭目录,防止內存泄露
avio_close_dir(&context);
return 0;
}
编译:
root@ubuntu:/home/SDL_FFMPEG# gcc main.c -o main `pkg-config --libs libavutil libavformat`
运行:
root@ubuntu:/home/chenjianzhen/SDL_FFMPEG# ./main
99443464 main
878 main.c