FFmpeg метаданные Unicode символы не правильно интерпретируются - PullRequest
0 голосов
/ 14 марта 2019

Мне нужно использовать FFmpeg в Android для извлечения метаданных из треков. Я возвращаю строки в 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 также неправильно интерпретирует строку.

Очевидно, что кодировки интерпретируются неправильно, как я могу это исправить?

...