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;
            }
        }

即可。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM