·您当前的位置:首页 > 技术教程 >

[ffmpeg]FFmpeg程序视频转换中文汉字乱码的问题

时间:2017-04-12 10:20csdn.net
我用ffmpeg编码生成avi文件,可是如果用中文文件名,生成的真正的文件的文件名里所有的中文都变成乱码,请问怎么解决

各位高人,我用ffmpeg编码生成avi文件,可是如果用中文文件名,生成的真正的文件的文件名里所有的中文都变成乱码,请问怎么解决?明明传进去的char * filename用vs跟踪确实是中文啊! 怎么解决啊?
奇怪的是我在程序里用正确的中文文件名去打开文件,也能打开,而且打开的就是那个显示乱码的文件。

wKioL1VIqXLi-jYVAANfAKVi_Tk312.jpg

中文乱码解决:

使用ffmpeg生成音频文件的时候,如果名字中包含中文,就会乱码。解决的方法是将filename 变成unicode 编码。
下面的函数是将一个多字节串 变成unicode串

  1. //pszCode 是多字节的filename UTF8code 是预分配好的空间,保存unicode字符串 
  2. int ANSIToUTF8(char* pszCode, char* UTF8code) 
  3.     WCHAR Unicode[100]={0,}; 
  4.     char utf8[100]={0,}; 
  5.     
  6.     // read char Lenth 
  7.     int nUnicodeSize = MultiByteToWideChar(CP_ACP, 0, pszCode, strlen(pszCode), Unicode, sizeof(Unicode)); 
  8.     memset(UTF8code, 0, nUnicodeSize+1); 
  9.     // read UTF-8 Lenth 
  10.     int nUTF8codeSize = WideCharToMultiByte(CP_UTF8, 0, Unicode, nUnicodeSize, UTF8code, sizeof(Unicode), NULL, NULL); 
  11.  
  12.  
  13.     // convert to UTF-8 
  14.     MultiByteToWideChar(CP_UTF8, 0, utf8, nUTF8codeSize, Unicode, sizeof(Unicode)); 
  15.     UTF8code[nUTF8codeSize] = '\0'; 
  16.     return nUTF8codeSize; 

该函数来自http://www.zhengqili2.cn/2014/1/20/00018.html  修改了里面一个bug 。
亲测可用

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器