【问题标题】:QMediaPlaylist and UTF-8QMediaPlaylist 和 UTF-8
【发布时间】:2017-05-19 12:15:39
【问题描述】:

我无法用UTF-8-encoding 和QMediaPlaylist 加载*m3u-playlistfiles。 第一个入口的路径没有正确加载。

正如您在屏幕截图中看到的,第一个条目的路径以 D:/D/Media/New folder/ 开头,这是播放列表的路径,然后是 ,然后是媒体文件的相对路径,因为它保存在*m3u 文件。

使用带有ANSI-encoding 的 *m3u-files 我没有这些麻烦。

在这种情况下,像“ü”这样的字符(第二个条目)也没有正确编码。

有没有办法在不编写我自己的播放列表解析器的情况下解决这个问题?

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QDirIterator it("D:/D/Media/New folder", QStringList() << "*.m3u", QDir::Files, QDirIterator::Subdirectories);
    while (it.hasNext())
    {
        it.next();
        QMediaPlaylist currentPlaylist;
        currentPlaylist.clear();
        currentPlaylist.load(QUrl::fromLocalFile(it.filePath()));
        currentPlaylist.setCurrentIndex(0);
        int x = 1;
        ui->textBrowser->append(it.fileName());
        ui->textBrowser->append("-----");
        while(currentPlaylist.mediaCount() > 0)
        {
            ui->textBrowser->append(QString::number(x) + QString(": ") + currentPlaylist.currentMedia().canonicalUrl().toString());
            x++;
            currentPlaylist.removeMedia(0);
        }
        ui->textBrowser->append("");
    }
}

*m3u-内容

..\Musik\Mittelalter Party\Mittelalter Party Volume 1\Tanzwut - Meer.mp3
..\Musik\ASP\Humility\ASP - Küss mich (Chamber version).mp3
..\Musik\Disturbed\Ten Thousand Fists\Disturbed - Ten Thousand Fists.mp3

【问题讨论】:

    标签: qt encoding utf-8 qt5 m3u


    【解决方案1】:

    维基百科说 UTF-8 编码的播放列表应该有一个 .m3u8 扩展名。您是否尝试将文件扩展名更改为 .m3u8?

    【讨论】:

    • 谢谢你的作品。但是问题是我不能指望用户在我稍后发布我的程序时更改他们的播放列表扩展名。例如,我的播放列表是用 MediaMonkey 创建的,似乎将 UTF8-Playlists 保存为 *m3u。是否有可能检查文件的编码并创建类似虚拟 *m3u8 的东西,我可以将其加载到 QMediaPlaylist 中?
    • 我想你可能只是假设播放列表是 UTF-8 编码的并且总是制作 m3u 的临时副本(并将扩展名更改为 m3u8,这样当你将它传递给 QMediaPlaylist 时它会处理任何 UTF-8 字符)。我认为你真的不能做得比这更好。
    • 如果您想尝试,这里还有更多信息和一些选项:stackoverflow.com/questions/910793/…,但这都是针对 php 而不是 C++ / Qt
    • 创建一个临时副本是个好主意,但有两个问题。我不能保证我在播放列表文件夹中有写访问权,如果我在应用程序文件夹中创建副本,播放列表中的相对路径已损坏。我想我必须编写自己的解析器......至少在复制时我只需要将相对路径更改为绝对路径。谢谢!或者你有什么其他想法?
    • 无论如何,您都应该将临时文件放在临时目录中。我相当确定 Qt 具有为您提供系统 tmp 文件夹路径的功能。我明白你关于相对文件名的观点,但这似乎是一个阻碍。
    猜你喜欢
    • 2020-12-09
    • 2017-05-07
    • 1970-01-01
    • 2011-10-11
    • 2015-12-03
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多