国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > 综合技术 > ffmpeg有关问题一(编译+中文乱码)

ffmpeg有关问题一(编译+中文乱码)

来源:程序员人生   发布时间:2015-09-10 07:46:27 阅读次数:8352次

编译问题:

使用vs创建有关ffmpeg的工程,比如用ffmpeg来截取文件,转码等等的时候,使用debug模式,调试成功后,再使用release生成exe的时候,常常会报错,不是分配指针的时候,有问题,就是运行的时候,显示没法定位序数,没法连接到avcodec-xx.dll ,这类问题是由于,生成release的时候,对代码进行了优化,删除部份中间结果,但是ffmpeg却需要这些中间结果,所以生成的exe不正确。

解决方法是 打开项目属性页 打开链接器  优化选项  援用后面 选择否(/opt:NOREF) 。便可


中文乱码:

使用ffmpeg生成音频文件的时候,如果名字中包括中文,就会乱码。解决的方法是将filename 变成unicode 编码。
下面的函数是将1个多字节串 变成unicode串
//pszCode 是多字节的filename UTF8code 是预分配好的空间,保存unicode字符串
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⑻ Lenth
    int nUTF8codeSize = WideCharToMultiByte(CP_UTF8, 0, Unicode, nUnicodeSize, UTF8code, sizeof(Unicode), NULL, NULL); 


    // convert to UTF⑻ 
    MultiByteToWideChar(CP_UTF8, 0, utf8, nUTF8codeSize, Unicode, sizeof(Unicode)); 
    UTF8code[nUTF8codeSize] = '';
    return nUTF8codeSize;
}
该函数来自http://www.zhengqili2.cn/2014/1/20/00018.html  修改了里面1个bug 。
亲测可用

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生