Qt6.5 QMediaPlayer播放中文名媒体文件失败,如何处理?
Unsolved
Chinese
-
代码:
QAudioDevice defaultDevice = QMediaDevices::defaultAudioOutput(); QAudioOutput * audioOutput = new QAudioOutput(defaultDevice); audioOutput->setVolume (0.1); QMediaPlayer * player = new QMediaPlayer(); player->setAudioOutput (audioOutput); player->setSource (QUrl ("/music/那些年.mp3")); player->play ();
将文件名"那些年.mp3"改为"a.mp3"则播放成功
-
应该是字符编码问题 解析的路径可能不对 试下用utf-8包字符串
-
@noexcept_zhao 搜索Qt论坛得到"QStringConverter"这个类, 按照官方帮助内容采用如下代码:
filename="/music/那些年.mp3"
auto utf8 = QStringDecoder(QStringDecoder::Utf8);
QString utfStr = utf8(filename.toUtf8 ());
//...
player->setSource (QUrl (utfStr));
然而并没有什么用. -
@noexcept_zhao 有什么办法能准确的知道一个字符串的编码方式吗?
-
这是Qt6.5的一个Bug.
在官方Bug列表中以QMediaPlayer为关键字查询到Bug(QTBUG-112707).
Fix playing of video files with Chinese names
https://github.com/qt/qtmultimedia/commit/f1b07b9ac
问题出现在 <Qt>\6.5.0\Src\qtmultimedia\src\plugins\multimedia\ffmpeg\playbackengine\qffmpegmediadataholder.cpp