【问题标题】:Using taglib in a Qt application在 Qt 应用程序中使用 taglib
【发布时间】:2009-10-06 12:00:27
【问题描述】:

我想在我正在构建的 qt 应用程序中获取媒体文件的长度,因此我决定使用 taglib。这是读取长度的方法

void loadMetaData(QString file) {
    QByteArray fileName = QFile::encodeName( file );
    const char * encodedName = fileName.constData();
    TagLib::FileRef fileref = TagLib::FileRef( encodedName );
    if (fileref.isNull())
    {
        qDebug() << "Null";
    }
    else
    {
       qDebug() << "Not Null";
    } 
}

问题是 fileref 由于某种原因总是为空,我不知道为什么......

【问题讨论】:

  • 我的错!我正在使用 ogg theora 文件进行测试,taglib 似乎还不支持它们。 Tablib 应该有更好的回退方式,而不是仅仅返回一个空指针,不是吗?
  • 回退到什么?它不能对 Theora 文件做任何事情,所以无法打开它们对我来说似乎是最好的选择。

标签: c++ qt taglib


【解决方案1】:

在 FileRef 对象上使用 getter audioProperties()returned pointer 包含文件的长度(以秒为单位)。

【讨论】:

    【解决方案2】:

    TagLib# 能够处理一些 Theora 文件。我在一个项目中使用它,但发现它不适用于许多 Theora 视频(我认为使用 libtheora 1.1 转换的任何视频都不起作用)。

    TagLib.File file = TagLib.File.Create(@"c:\video.ogv");
    string height = file.Properties.VideoHeight;
    

    这适用于 .NET,但不是 C++。

    【讨论】:

      猜你喜欢
      • 2014-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      相关资源
      最近更新 更多