C++ 我如何知道音频文件的格式?

C++ 我如何知道音频文件的格式?,c++,qt,audio,C++,Qt,Audio,我想制作一个音乐播放器,我想在打开时过滤掉文件而不是音频文件。 我应该使用QAudioDecoder吗? 但我用QaudioCoder检查的每个文件都告诉我相同的编解码器“audio/pcm” qaudioder解码器; 解码器.setSourceFilename(fileUrl.toLocalFile()); qDebug() 关于如何在不检查其后缀的情况下检查文件中的音频格式,有一个工具名,命令行工具运行如下: mediainfo -f [filepath] 您将获得有关该文件的完整信息,

我想制作一个音乐播放器,我想在打开时过滤掉文件而不是音频文件。
我应该使用QAudioDecoder吗?
但我用QaudioCoder检查的每个文件都告诉我相同的编解码器“audio/pcm”

qaudioder解码器;
解码器.setSourceFilename(fileUrl.toLocalFile());
qDebug()
  • 关于如何在不检查其后缀的情况下检查文件中的音频格式,有一个工具名,命令行工具运行如下:

    mediainfo -f [filepath]
    
    您将获得有关该文件的完整信息,包括视频和音频(如果存在)。在这些参数中,在“音频”类别下有一个“格式”值,表示内部的实际音频格式。例如AAC/AC3

  • >P>文件可以在名称更改后播放,我认为文件名中可能有一些空格字符,或者播放器不能访问由名称指定的文件。

  • 关于如何在不检查其后缀的情况下检查文件中的音频格式,有一个工具名,命令行工具运行如下:

    mediainfo -f [filepath]
    
    您将获得有关该文件的完整信息,包括视频和音频(如果存在)。在这些参数中,在“音频”类别下有一个“格式”值,表示内部的实际音频格式。例如AAC/AC3

  • >P>文件可以在名称更改后播放,我认为文件名中可能有一些空格字符,或者播放器不能访问由名称指定的文件。

    发件人:

    对于播放不是简单、未压缩音频的媒体或音频文件,可以使用<代码> QediaPoovis/Cuffo> C++类……所支持的压缩音频格式取决于操作系统环境,以及用户可能安装了什么媒体插件。 如何使用

    QMediaPlayer
    类的一个简单示例:

    player = new QMediaPlayer;
    // ...
    player->setMedia(QUrl::fromLocalFile("/Users/me/Music/coolsong.mp3"));
    player->setVolume(50);
    player->play();
    
    要验证是否支持编解码器,可以使用
    QMediaPlayer
    类的
    error()
    方法,该方法将返回错误代码(请参阅)

    因此,在调用
    setMedia()
    之后,您可以执行以下操作:

    if (player->error() == QMediaPlayer::FormatError)
    {
        // Codec/format unsupported
    }
    

    关于打开文件时出现的错误代码:

    • 检查路径中是否没有
      \
      字符(如果有,请用另一个
      \
      转义)
    • 检查是否有空格、特殊字符等
    来自:

    对于播放不是简单、未压缩音频的媒体或音频文件,可以使用<代码> QediaPoovis/Cuffo> C++类……所支持的压缩音频格式取决于操作系统环境,以及用户可能安装了什么媒体插件。 如何使用

    QMediaPlayer
    类的一个简单示例:

    player = new QMediaPlayer;
    // ...
    player->setMedia(QUrl::fromLocalFile("/Users/me/Music/coolsong.mp3"));
    player->setVolume(50);
    player->play();
    
    要验证是否支持编解码器,可以使用
    QMediaPlayer
    类的
    error()
    方法,该方法将返回错误代码(请参阅)

    因此,在调用
    setMedia()
    之后,您可以执行以下操作:

    if (player->error() == QMediaPlayer::FormatError)
    {
        // Codec/format unsupported
    }
    

    关于打开文件时出现的错误代码:

    • 检查路径中是否没有
      \
      字符(如果有,请用另一个
      \
      转义)
    • 检查是否有空格、特殊字符等

    谢谢,我将研究如何在我的应用程序中使用mediainfo。因为您使用的是Qt framework,所以我猜您的目标应用程序可能是一个可执行的二进制文件,如果您需要研究libmediainfo模块,该模块提供带有静态库的函数。谢谢,我将研究如何在我的应用程序中使用mediainfo。因为您使用的是Qt框架,所以我猜您的目标应用程序可能是一个可执行的二进制文件,如果您需要研究libmediainfo模块,该模块提供带有静态库的函数。