ffmpeg中avio_open无法打开中文路径的解决方法

将文件路径转换成为UTF-8编码即可,具体实现如下:

int ANSIToUTF8(char* pszCode, char* UTF8code)
{
    WCHAR Unicode[100]={0,}; 
    char utf8[100]={0,};
    
    // read char Lenth
    int nUnicodeSize = MultiByteToWideChar(CP_ACP, 0, pszCode, strlen(pszCode), Unicode, sizeof(Unicode)); 
    memset(UTF8code, 0, nUnicodeSize+1);
    // read UTF-8 Lenth
    int nUTF8codeSize = WideCharToMultiByte(CP_UTF8, 0, Unicode, nUnicodeSize, UTF8code, sizeof(Unicode), NULL, NULL); 

    // convert to UTF-8 
    MultiByteToWideChar(CP_UTF8, 0, utf8, nUTF8codeSize, Unicode, sizeof(Unicode)); 
    UTF8code[nUTF8codeSize+1] = '\0';
    return nUTF8codeSize;
}

...

if (!(fmt->flags & AVFMT_NOFILE))
        {            
            char filename[256];
            ANSIToUTF8((char*)encoderparam->outfilename, filename);
            if (avio_open(&oc->pb, filename, AVIO_FLAG_WRITE) < 0)
            {
                return URL_OPEN_FAILD;
            }
        }

即可。

原文地址:https://www.cnblogs.com/youfal/p/2704094.html