#include <stdio.h>
#include <libavutil/log.h> //Log系统
#include <libavformat/avformat.h> //文件的删除和重命名
int main(int argc,char* argv[])
{
//FFmpeg开发Log系统
av_log_set_level(AV_LOG_DEBUG);
av_log(NULL,AV_LOG_INFO,"hello\n");
av_log(NULL,AV_LOG_INFO,"hello %s","world\n");
// 文件的删除
int ret;
ret = avpriv_io_delete("./mytest.txt"); //参数是一个url 字符串
if(ret<0)
{
av_log(NULL,AV_LOG_ERROR,"delete file failed.\n");
}else if(ret==0)
{
av_log(NULL,AV_LOG_INFO,"delete file success.\n");
}
//重命名文件
ret = avpriv_io_move("11.txt","22.txt");
if(ret<0)
{
av_log(NULL,AV_LOG_ERROR," rename file failed.\n");
}
//操作目录
/*
函数
avio_open_dir
avio_read_dir
avio_close_dir
结构体
AVIODirContext 操作目录的上下文
AVIODirEntry 目录项,用于存放文件名 文件大小 等信息
*/
// AVIODirContext *ctx=NULL;
// AVIODirEntry* entry=NULL;
// // 注意Windows下会返回-40,也就是Function not implement,方法未实现,也就是说windows下不支持此方法
// ret = avio_open_dir(&ctx,"./udp",NULL); // 上下文,访问的目录(./是当前目录)
// if(ret<0)
// {
// av_log(NULL,AV_LOG_ERROR," open dir failed. %s \n",av_err2str(ret)); //av_err2str 错误码整形转为字符串
// goto __fail;
// }else{
// //访问目录的每一项
// while(1)
// {
// ret = avio_read_dir(ctx,&entry);
// if(ret<0)
// {
// av_log(NULL,AV_LOG_ERROR," avio_read_dir failed. %s \n",av_err2str(ret));
// }
// if(!entry) //entry为空,就是到了末尾
// {
// break;
// }
// // PRId64 代表64位数字
// av_log(NULL,AV_LOG_INFO,"size=%12"PRId64" name=%s \n",entry->size,entry->name);
// avio_free_directory_entry(&entry);
// }
// }
// __fail:
// avio_close_dir(&ctx);
// 打印 音/视频信息
/*
av_register_all() 将ffmpeg所定义的编解码、协议全部注册到程序里面来
avformat_open_input()/avformat_close_input()
av_dump_format() 将多媒体文件中的media信息打印出来
*/
AVFormatContext *fmt_ctx=NULL;
av_register_all(); //一般所有的ffmpeg程序开始都要调用
//第三个参数 是输入文件的格式,不填的话会根据文件格式来解析
//第四个参数 是通过命令行来输入参数 ,一般是NULL
ret = avformat_open_input(&fmt_ctx,"./1.mp4",NULL,NULL);
if(ret<0)
{
av_log(NULL,AV_LOG_ERROR," open avformat failed : %s \n",av_err2str(ret));
return -1;
}else{
//第二个参数是流的索引值,一般为0
// 第四个参数指的是输入流 (0) 还是输出流( 1)
av_dump_format(fmt_ctx,0,"./1.mp4",0);
}
avformat_close_input(&fmt_ctx);
return 0;
}
//在msys2中,要msys2_shell.cmd -mingw64 这命令打开才只可以执行程序
//gcc -g -o ffmpeglog ffmpeglog.c -lavutil -lavformat -I/usr/local/include -L/usr/local/lib