QAudioDecoder 类
QAudioDecoder 类实现了音频解码。 更多...
| 头文件 | #include <QAudioDecoder> | 
| CMake | find_package(Qt6 REQUIRED COMPONENTS Multimedia) target_link_libraries(mytarget PRIVATE Qt6::Multimedia) | 
| qmake | QT += multimedia | 
| 继承 | QObject | 
| 状态 | 初步 | 
此类正在开发中,并且可能会发生变化。
公共类型
| enum | Error { NoError, ResourceError, FormatError, AccessDeniedError, NotSupportedError } | 
属性
- bufferAvailable : const bool
- error : const QString
- isDecoding : const bool
- source : QUrl
公共函数
| QAudioDecoder(QObject *parent = nullptr) | |
| virtual | ~QAudioDecoder() | 
| QAudioFormat | audioFormat() const | 
| bool | bufferAvailable() const | 
| qint64 | duration() const | 
| QAudioDecoder::Error | error() const | 
| QString | errorString() const | 
| bool | isDecoding() const | 
| bool | isSupported() const | 
| qint64 | position() const | 
| QAudioBuffer | read() const | 
| void | setAudioFormat(const QAudioFormat &format) | 
| void | setSource(const QUrl &fileName) | 
| void | setSourceDevice(QIODevice *device) | 
| QUrl | source() const | 
| QIODevice * | sourceDevice() const | 
公共槽
信号
| void | bufferAvailableChanged(bool available) | 
| void | bufferReady() | 
| void | durationChanged(qint64 duration) | 
| void | error(QAudioDecoder::Error error) | 
| void | finished() | 
| void | formatChanged(const QAudioFormat &format) | 
| void | isDecodingChanged(bool) | 
| void | positionChanged(qint64 position) | 
| void | sourceChanged() | 
详细描述
QAudioDecoder 类是一个用于解码音频媒体文件的高级类。它与 QMediaPlayer 类类似,但音频是通过此 API 传输的,而不是直接路由到音频硬件。
另请参阅 QAudioBuffer。
成员类型文档
枚举 QAudioDecoder::Error
定义了媒体播放器错误状态。
| 常量 | 值 | 描述 | 
|---|---|---|
| QAudioDecoder::NoError | 0 | 未发生错误。 | 
| QAudioDecoder::ResourceError | 1 | 无法解析媒体资源。 | 
| QAudioDecoder::FormatError | 2 | 不支持媒体资源的格式。 | 
| QAudioDecoder::AccessDeniedError | 3 | 没有播放媒体资源的适当权限。 | 
| QAudioDecoder::NotSupportedError | 4 | QAudioDecoder 不支持此平台 | 
属性文档
[只读] bufferAvailable : const bool
此属性表示是否有一个解码的音频缓冲区可用
访问函数
| bool | bufferAvailable() const | 
通知信号
| void | bufferAvailableChanged(bool available) | 
[只读] error : const QString
返回当前错误的简单描述,如果没有错误则返回空字符串。
访问函数
| QString | errorString() const | 
[只读] isDecoding : const bool
true 如果解码器当前正在运行并且正在解码音频数据。
访问函数
| bool | isDecoding() const | 
通知信号
| void | isDecodingChanged(bool) | 
source : QUrl
此属性表示解码器对象正在解码的活动文件名。
访问函数
通知信号
| void | sourceChanged() | 
成员函数文档
[显式] QAudioDecoder::QAudioDecoder(QObject *parent = nullptr)
使用 parent 构建一个 QAudioDecoder 实例。
[虚拟 noexcept] QAudioDecoder::~QAudioDecoder()
销毁音频解码器对象。
QAudioFormat QAudioDecoder::audioFormat() const
返回解码器设置到的音频格式。
注意:这可能与解码样本的格式不同,如果音频格式被设置为无效的格式。
另请参阅 setAudioFormat() 和 formatChanged。
bool QAudioDecoder::bufferAvailable() const
如果可用缓冲区以读取,则返回 true,否则返回 false。如果没有缓冲区可用,调用 read() 函数将返回一个无效的缓冲区。
注意:该属性 bufferAvailable 的获取函数。
[信号] void QAudioDecoder::bufferAvailableChanged(bool available)
指示新缓冲区的可用性(如果“可用”为真)。
如果“可用”为假,则没有可用缓冲区。
注意:属性“bufferAvailable”的通知信号。
另请参阅 bufferAvailable() 和 bufferReady。
[signal] void QAudioDecoder::bufferReady()
表示新的解码音频缓冲区可供读取。
另请参阅 read() 和 bufferAvailable。
qint64 QAudioDecoder::duration() const
返回音频流的总体时长(以毫秒为单位),如果不可用则返回-1。
[signal] void QAudioDecoder::durationChanged(qint64 duration)
指示已解码数据估计的时长已更改。
另请参阅 positionChanged。
QAudioDecoder::Error QAudioDecoder::error() const
返回QAudioDecoder的当前错误状态。
[signal] void QAudioDecoder::error(QAudioDecoder::Error error)
表示出现错误情况。
注意:该类中信号error是重载的。要使用函数指针语法连接到此信号,Qt提供了一个方便的辅助程序来获取函数指针,例如
connect(audioDecoder, QOverload<QAudioDecoder::Error>::of(&QAudioDecoder::error), [=](QAudioDecoder::Error error){ /* ... */ });
另请参阅 errorString。
[signal] void QAudioDecoder::finished()
表示解码已完成。如果解码失败,则发出错误信号。
[signal] void QAudioDecoder::formatChanged(const QAudioFormat &format)
表示解码器当前的音频格式已更改为format。
另请参阅 audioFormat 和 setAudioFormat。
bool QAudioDecoder::isSupported() const
如果在此平台上支持音频解码,则返回true。
qint64 QAudioDecoder::position() const
返回从解码器读取的最后缓冲区的位置(以毫秒为单位);如果没有读取缓冲区,则返回-1。
[signal] void QAudioDecoder::positionChanged(qint64 position)
指示解码器的当前位置position已更改。
另请参阅 durationChanged。
QAudioBuffer QAudioDecoder::read() const
从解码器中读取一个缓冲区,如果有的话。如果没有可用的已解码缓冲区或发生错误时,返回一个无效的缓冲区。在这两种情况下,此函数都不会阻塞。
您应该在调用read()之前响应bufferReady()信号或检查bufferAvailable()函数,以确保获取有用的数据。
void QAudioDecoder::setAudioFormat(const QAudioFormat &format)
将解码样本所需的音频格式设置为format。
只能在该解码器停止时设置此属性。在其他时候设置此属性将不被忽略。
如果解码器不支持此格式,error()将设置为FormatError。
如果您不指定格式,将使用解码音频本身的格式。否则,将应用一些格式转换。
如果您希望将解码格式重置为原始音频文件的格式,可以指定一个无效的format。
警告:Android后台尚未支持设置所需的音频格式。默认的FFMPEG后台可以正常工作。
另请参阅:audioFormat。
void QAudioDecoder::setSource(const QUrl &fileName)
将当前音频文件名设置为fileName。
设置此属性时将停止任何当前解码,并丢弃任何音频缓冲区。
您只能指定源文件名或源QIODevice。设置其中之一将取消设置另一个。
注意:属性source的设置器函数。
另请参阅:source。
void QAudioDecoder::setSourceDevice(QIODevice *device)
将当前音频QIODevice设置为device。
设置此属性时将停止任何当前解码,并丢弃任何音频缓冲区。
您只能指定源文件名或源QIODevice。设置其中之一将取消设置另一个。
另请参阅:sourceDevice。
QUrl QAudioDecoder::source() const
返回要解码的当前文件名。如果调用了setSourceDevice,则将为空。
注意:属性source的获取器函数。
另请参阅:setSource。
[signal] void QAudioDecoder::sourceChanged()
表明解码器的当前源已更改。
注意:属性source的通知信号。
另请参阅:source()和sourceDevice。
QIODevice *QAudioDecoder::sourceDevice() const
返回当前设置的源QIODevice,如果设置了的话。如果调用了setSource(),则将为null。
另请参阅:setSourceDevice。
[slot] void QAudioDecoder::start()
开始解码音频资源。
随着数据的解码,当解码足够的数据时,会发出 bufferReady() 信号。此时调用 read() 将返回一个音频缓冲区,而不会阻塞。
如果在缓冲区准备好之前调用 read(),则会返回一个无效的缓冲区,同样不会阻塞。
另请参阅read。
[slot] void QAudioDecoder::stop()
停止解码音频。再次调用 start() 会从开始重新开始解码。
© 2024 Qt 公司 Limited。本文件中的文档贡献归其各自的版权所有者所有。本文件中的文档是根据由自由软件基金会发布的 GNU 自由文档许可版 1.3 许可的。Qt 及其关联标志是芬兰的 Qt 公司及其在全球的商标。所有其他商标均为其各自所有者的财产。