FFmpeg 初级操作—打印日志,文件目录操作

07-10 1689阅读

文章目录

    • 日志输出操作
    • 文件的删除与重命名
    • 操作目录实现
      • 实现简单的ls命令—代码实现

        日志输出操作

        FFmpeg 提供了一套LOG操作,基本上和printf用法差不多,如下方所示

        FFmpeg 初级操作—打印日志,文件目录操作
        (图片来源网络,侵删)
        #include
        #include
        int main(int argc, char * argv[]){
            av_log_set_level(AV_LOG_DEBUG);
            //基本上可以当作 printf来用
            av_log(NULL,AV_LOG_INFO,"hello ffmpeg log %d\n",123);
            return 0;
        }
        

        文件的删除与重命名

        avpriv_io_delete()

        这个函数的作用是用来删除文件的,其具体实现可能会依赖于FFmpeg当前的环境和构建选项。它通常在FFmpeg的内部代码中使用,用于处理一些特定的文件删除需求,可能会涉及更底层的文件系统操作或者特定的编解码器功能。

        avpriv_io_remove()

        参数

        • const char *url: 需要删除的文件的路径。

          返回值

          • 成功删除文件时返回 0。
          • 如果删除文件失败,返回一个负数的错误码。

            操作目录实现

            相关操作API:

            1.avio_open_dir

            参数

            • AVIODirContext **s:
              • 指向目录上下文的指针。该指针在函数成功返回后会指向一个有效的 AVIODirContext,用于后续的目录操作。
              • const char *url:
                • 要打开的目录的路径。可以是本地文件系统路径,也可以是支持的协议路径。
                • AVDictionary **options:
                  • 选项字典,包含用于打开目录的其他选项。可以为 NULL 表示没有额外选项。常用于传递特定协议的参数。

                    返回值

                    • 成功时返回 0。
                    • 失败时返回负数的错误码。

                      2.int avio_read_dir(AVIODirContext *s, AVIODirEntry **next);

                      参数

                      • AVIODirContext *s:
                        • 目录上下文指针。这个指针是通过之前调用 avio_open_dir 获得的。
                        • AVIODirEntry **next:
                          • 指向指针的指针。这个指针在成功读取后会指向一个有效的 AVIODirEntry,表示目录中的下一个条目。

                            返回值

                            • 成功时返回 0,并将 next 指向一个新分配的 AVIODirEntry 结构体。
                            • 目录读取完毕时返回 0,并将 next 设置为 NULL。
                            • 失败时返回负数的错误码。

                              注: AVIODirEntry 结构体 存放文件名,文件大小等相关属性

                              typedef struct AVIODirEntry {
                                  char *name;                           /** 
                              
                              1. avio_close_dir(&ctx);

                              关闭目录,释放相关资源

                              实现简单的ls命令—代码实现

                              #include 
                              #include 
                              int main() {
                                  AVIODirContext *ctx = NULL;
                                  AVIODirEntry *entry = NULL;
                                  int ret;
                                  // 打开目录
                                  if ((ret = avio_open_dir(&ctx, "./", NULL)) name, entry->size);
                                      avio_free_directory_entry(&entry); // 释放目录项
                                  }
                                  // 关闭目录
                                  avio_close_dir(&ctx);
                                  return 0;
                              }
                              
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]