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