FFmpeg元数据Unicode字符无法正确解释

时间:2019-03-14 00:45:35

标签: java android c++ ffmpeg java-native-interface

我需要在Android中使用FFmpeg从轨道中提取元数据。我以这种方式将字符串返回Java:

...

auto titleEntry = av_dict_get(pFormatCtx->metadata, "title", nullptr, 0);
if (titleEntry != nullptr) *title = strdup(titleEntry->value);

...

ret= (jobjectArray)env->NewObjectArray(3,env->FindClass("java/lang/String"),env->NewStringUTF(""));

env->SetObjectArrayElement(ret, 1, env->NewStringUTF(title));

问题是带有Unicode字符的曲目的元数据被错误解释。

例如标题为

的曲目
  

ਵਹਗਰਵਹਗਰ没有你(音高0.00-速度100)

成为

  

ਵà¹ààà°à¨µà¨¹à¨°0.00-速度10

使用MediaMetadataRetriever以及其他音乐播放器可以正确显示曲目标题,但是即使是FFprobe命令行也无法正确显示曲目名称,并且从C ++或Java登录也无法正确解释字符串。

很明显,编码没有正确解释,我该如何解决?

0 个答案:

没有答案