QAudioDecoder 类

QAudioDecoder 类实现了音频解码。 更多...

头文件 #include <QAudioDecoder>
CMakefind_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmakeQT += multimedia
继承 QObject
状态初步

此类正在开发中,并且可能会发生变化。

公共类型

enumError { NoError, ResourceError, FormatError, AccessDeniedError, NotSupportedError }

属性

公共函数

QAudioDecoder(QObject *parent = nullptr)
virtual~QAudioDecoder()
QAudioFormataudioFormat() const
boolbufferAvailable() const
qint64duration() const
QAudioDecoder::Errorerror() const
QStringerrorString() const
boolisDecoding() const
boolisSupported() const
qint64position() const
QAudioBufferread() const
voidsetAudioFormat(const QAudioFormat &format)
voidsetSource(const QUrl &fileName)
voidsetSourceDevice(QIODevice *device)
QUrlsource() const
QIODevice *sourceDevice() const

公共槽

voidstart()
voidstop()

信号

voidbufferAvailableChanged(bool available)
voidbufferReady()
voiddurationChanged(qint64 duration)
voiderror(QAudioDecoder::Error error)
voidfinished()
voidformatChanged(const QAudioFormat &format)
voidisDecodingChanged(bool)
voidpositionChanged(qint64 position)
voidsourceChanged()

详细描述

QAudioDecoder 类是一个用于解码音频媒体文件的高级类。它与 QMediaPlayer 类类似,但音频是通过此 API 传输的,而不是直接路由到音频硬件。

另请参阅 QAudioBuffer

成员类型文档

枚举 QAudioDecoder::Error

定义了媒体播放器错误状态。

常量描述
QAudioDecoder::NoError0未发生错误。
QAudioDecoder::ResourceError1无法解析媒体资源。
QAudioDecoder::FormatError2不支持媒体资源的格式。
QAudioDecoder::AccessDeniedError3没有播放媒体资源的适当权限。
QAudioDecoder::NotSupportedError4QAudioDecoder 不支持此平台

属性文档

[只读] bufferAvailable : const bool

此属性表示是否有一个解码的音频缓冲区可用

访问函数

boolbufferAvailable() const

通知信号

voidbufferAvailableChanged(bool available)

[只读] error : const QString

返回当前错误的简单描述,如果没有错误则返回空字符串。

访问函数

QStringerrorString() const

[只读] isDecoding : const bool

true 如果解码器当前正在运行并且正在解码音频数据。

访问函数

boolisDecoding() const

通知信号

voidisDecodingChanged(bool)

source : QUrl

此属性表示解码器对象正在解码的活动文件名。

访问函数

QUrlsource() const
voidsetSource(const QUrl &fileName)

通知信号

成员函数文档

[显式] 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()

表示解码已完成。如果解码失败,则发出错误信号。

另请参阅 startstoperror

[signal] void QAudioDecoder::formatChanged(const QAudioFormat &format)

表示解码器当前的音频格式已更改为format

另请参阅 audioFormatsetAudioFormat

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 公司及其在全球的商标。所有其他商标均为其各自所有者的财产。