Qt6.5 QMediaPlayer播放中文名媒体文件失败,如何处理?
Unsolved
Chinese
-
wrote on 5 Jun 2023, 05:00 last edited by
代码:
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"则播放成功
-
wrote on 5 Jun 2023, 14:26 last edited by
应该是字符编码问题 解析的路径可能不对 试下用utf-8包字符串
-
应该是字符编码问题 解析的路径可能不对 试下用utf-8包字符串
wrote on 6 Jun 2023, 00:45 last edited by cppdo 6 Jun 2023, 00:47@noexcept_zhao 搜索Qt论坛得到"QStringConverter"这个类, 按照官方帮助内容采用如下代码:
filename="/music/那些年.mp3"
auto utf8 = QStringDecoder(QStringDecoder::Utf8);
QString utfStr = utf8(filename.toUtf8 ());
//...
player->setSource (QUrl (utfStr));
然而并没有什么用. -
应该是字符编码问题 解析的路径可能不对 试下用utf-8包字符串
wrote on 6 Jun 2023, 02:21 last edited by@noexcept_zhao 有什么办法能准确的知道一个字符串的编码方式吗?
-
wrote on 19 Jun 2023, 08:37 last edited by
这是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