FFmpeg開發實戰(二):FFmpeg 文件操作


FFmpeg 提供了豐富的API供我們使用,下面我們來講述一下文件操作相關的API:

  • FFmpeg 刪除文件:avpriv_io_delete()
  • FFmpeg 重命名文件:avpriv_io_move()
  • FFmpeg 打開目錄:avio_open_dir()
  • FFmpeg 讀取目錄:avio_read_dir();
  • FFmpeg 關閉目錄:avio_close_dir()

使用FFmpeg文件操作API實現刪除和重命名的實例代碼如下:

// FFmpeg 刪除文件操作
void ffmpegDelFile() {
    int ret;
    ret = avpriv_io_delete("1.txt");  // 在項目目錄下創建的文件(測試時需要創建好)
    printf("Del File Code : %d \n", ret);
    if (ret < 0) {
        av_log(NULL, AV_LOG_ERROR, "Failed to delete file \n");
    } else {
        av_log(NULL, AV_LOG_INFO, "Delete File Success!\n ");
    }
}

// FFmpeg 重命名或移動文件
void ffmpegMoveFile(char* src, char* dst) {
    int ret;
    ret = avpriv_io_move(src, dst);
    printf("Move File Code : %d \n", ret);
    // 重命名時,如果文件不存在,ret也會0
    if (ret < 0) {
        av_log(NULL, AV_LOG_ERROR, "Failed to Move File %s!\n ", src);
    } else {
        av_log(NULL, AV_LOG_INFO, "Success Move File %s!\n", src);
    }
}

使用FFmpeg文件操作API實現讀取文件目錄及輸出文件目錄List的相關代碼如下:

// FFmpeg 目錄操作
void ffmpegDir() {

    int ret;
    
    // 上下文
    AVIODirContext *dirCtx = NULL;
    AVIODirEntry *dirEntry = NULL;
    
    // 注意Windows下會返回-40,也就是Function not implement,方法未實現,也就是說windows下不支持此方法
    ret = avio_open_dir(&dirCtx, "include", NULL);  

    if (ret < 0) {
        // 輸出錯誤日志
        printf("cant open dir,msg = %s", av_err2str(ret));
        return;
    }

    av_log(NULL, AV_LOG_INFO, "Open Dir Success!");

    while (1){
        ret = avio_read_dir(dirCtx, &dirEntry);
        if (ret < 0) {
            printf("cant read dir : %s", av_err2str(ret));
            // 防止內存泄漏
            goto __failed;
        }
        av_log(NULL, AV_LOG_INFO, "read dir success");
        if (!dirEntry) {
            break;
        }
        printf("Entry Name = %s", dirEntry->name);
        // 釋放資源
        avio_free_directory_entry(&dirEntry);
    }
// 釋放資源
__failed:
    avio_close_dir(&dirCtx);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM