void sourceChanged(const QUrl &media);
-
描述: 当
QMediaPlayer
的媒体源(即当前播放的文件或流的 URL)发生变化时,会发出此信号。 -
参数:
const QUrl &media
: 表示新的媒体源的 URL。如果媒体源被清空(例如调用setMedia(nullptr)
),则media
可能是一个空的QUrl
。 -
使用场景
-
当调用
QMediaPlayer::setMedia(const QMediaContent &media)
或QMediaPlayer::setSource(const QUrl &source)
方法设置新的媒体源时,会触发此信号。 -
可以连接此信号到自定义槽函数,以便在媒体源发生变化时执行一些操作,例如更新 UI 或加载相关的元数据。
void playbackStateChanged(QMediaPlayer::PlaybackState newState);
-
描述: 当
QMediaPlayer
的播放状态发生变化时,会发出此信号。 -
参数:
-
QMediaPlayer::PlaybackState newState
: 表示新的播放状态。QMediaPlayer::PlaybackState
是一个枚举类型,包含以下可能的值:-
QMediaPlayer::StoppedState
: 播放器已停止。 -
QMediaPlayer::PlayingState
: 播放器正在播放。 -
QMediaPlayer::PausedState
: 播放器已暂停。
-
-
使用场景
-
当调用
QMediaPlayer::play()
、QMediaPlayer::pause()
或QMediaPlayer::stop()
方法时,播放状态会发生变化,从而触发此信号。 -
可以连接此信号到自定义槽函数,以便在播放状态发生变化时执行一些操作,例如更新 UI 或记录日志。
void mediaStatusChanged(QMediaPlayer::MediaStatus status);
-
描述: 当媒体状态发生变化时发出此信号。
-
参数:
status
表示当前的媒体状态,如NoMedia
、LoadingMedia
、LoadedMedia
、StalledMedia
、BufferingMedia
、BufferedMedia
、EndOfMedia
、InvalidMedia
等。
void durationChanged(qint64 duration);
-
描述: 当媒体的总时长发生变化时发出此信号。
-
参数:
duration
表示媒体的总时长(以毫秒为单位)。
void positionChanged(qint64 position);
-
描述: 当媒体的播放位置发生变化时发出此信号。
-
参数:
position
表示当前的播放位置(以毫秒为单位)。
void hasAudioChanged(bool available);
-
描述: 当媒体的音频可用性发生变化时,会发出此信号。音频可用性表示当前媒体是否包含音频轨道。
-
参数:
-
bool available
: 表示当前媒体是否包含音频。-
true
: 媒体包含音频轨道。 -
false
: 媒体不包含音频轨道。
-
-
使用场景
-
当加载的媒体文件或流的属性发生变化时(例如从纯视频文件切换到包含音频的视频文件),此信号会被触发。
-
可以连接此信号到自定义槽函数,以便在媒体的音频可用性发生变化时执行一些操作,例如启用或禁用 UI 中的音量控制或音频设置。
void hasVideoChanged(bool videoAvailable);
-
描述: 当媒体的视频可用性发生变化时,会发出此信号。视频可用性表示当前媒体是否包含视频轨道。
-
参数:
-
bool videoAvailable
: 表示当前媒体是否包含视频。-
true
: 媒体包含视频轨道。 -
false
: 媒体不包含视频轨道。
-
-
使用场景
-
当加载的媒体文件或流的属性发生变化时(例如从纯音频文件切换到包含视频的文件),此信号会被触发。
-
可以连接此信号到自定义槽函数,以便在媒体的视频可用性发生变化时执行一些操作,例如启用或禁用 UI 中的视频显示控件或调整布局。
void bufferProgressChanged(float progress);
-
描述: 当缓冲进度发生变化时触发。
-
参数:
-
progress
: 表示当前的缓冲进度(0.0 到 1.0 之间)
-
void seekableChanged(bool seekable);
-
描述: 当媒体的可寻址状态发生变化时,会发出此信号。可寻址状态表示是否可以在媒体中跳转到指定的时间位置(例如快进或后退)。
-
参数:
-
bool seekable
: 表示当前媒体是否支持寻址操作。-
true
: 媒体支持寻址操作。 -
false
: 媒体不支持寻址操作。
-
-
使用场景
-
当加载的媒体文件或流的属性发生变化时(例如从不可寻址的直播流切换到可寻址的视频文件),此信号会被触发。
-
可以连接此信号到自定义槽函数,以便在媒体的可寻址状态发生变化时执行一些操作,例如启用或禁用 UI 中的进度条或跳转按钮。
void playingChanged(bool playing);
-
描述: 当
QMediaPlayer
的播放状态变为“正在播放”或从“正在播放”变为其他状态时,会发出此信号。 -
参数:
-
bool playing
: 表示当前是否处于“正在播放”状态。-
true
: 播放器正在播放。 -
false
: 播放器未在播放(可能是暂停或停止状态)。
-
-
使用场景
-
当调用
QMediaPlayer::play()
或QMediaPlayer::pause()
、QMediaPlayer::stop()
方法时,播放状态会发生变化,从而触发此信号。 -
可以连接此信号到自定义槽函数,以便在播放状态发生变化时执行一些操作,例如更新 UI 或记录日志。
void playbackRateChanged(qreal rate);
-
描述: 当播放速率发生变化时发出此信号。
-
参数:
rate
表示当前的播放速率(1.0 表示正常速度,2.0 表示两倍速等)。
void loopsChanged();
-
描述: 当
QMediaPlayer
的循环播放设置(即媒体播放完成后是否重新开始播放)发生变化时,会发出此信号。 -
使用场景
-
当调用
QMediaPlayer::setLoops(int loops)
方法修改循环播放次数时,此信号会被触发。 -
可以连接此信号到自定义槽函数,以便在循环播放设置发生变化时执行一些操作,例如更新 UI 或记录日志。
void metaDataChanged();
-
描述: 当媒体的元数据(例如标题、作者、专辑、时长等信息)发生变化时,会发出此信号。
-
使用场景
-
当加载的媒体文件或流的元数据发生变化时(例如从无元数据的文件切换到包含元数据的文件),此信号会被触发。
-
可以连接此信号到自定义槽函数,以便在元数据发生变化时执行一些操作,例如更新 UI 或记录日志。
-
注意事项
-
元数据的含义:
-
元数据是嵌入在媒体文件中的附加信息,例如标题、作者、专辑、时长、封面等。
-
不同媒体格式支持的元数据类型可能不同。
-
-
信号触发时机:
-
当加载的媒体文件包含元数据时,此信号会被触发。
-
当媒体源发生变化时(例如调用
setSource()
或setMedia()
),此信号可能会被触发。
-
-
获取元数据:
-
可以使用
QMediaPlayer::metaData()
方法获取当前媒体的元数据。
-
void videoOutputChanged();
-
描述: 当
QMediaPlayer
的视频输出对象发生变化时,会发出此信号。视频输出对象是用于显示视频内容的控件或组件,例如QVideoWidget
或QGraphicsVideoItem
。 -
使用场景
-
当调用
QMediaPlayer::setVideoOutput(QVideoWidget *)
或QMediaPlayer::setVideoOutput(QGraphicsVideoItem *)
方法设置新的视频输出对象时,此信号会被触发。 -
可以连接此信号到自定义槽函数,以便在视频输出对象发生变化时执行一些操作,例如更新 UI 或调整布局。
-
注意事项
-
视频输出对象:
-
QMediaPlayer
需要通过setVideoOutput()
方法设置一个视频输出对象,才能显示视频内容。 -
常见的视频输出对象包括:
-
QVideoWidget
: 用于在普通窗口中显示视频。 -
QGraphicsVideoItem
: 用于在QGraphicsScene
中显示视频。
-
-
-
信号触发时机:
-
当调用
setVideoOutput()
方法设置新的视频输出对象时,此信号会被触发。 -
如果视频输出对象未发生变化(例如重复设置相同的对象),此信号不会触发。
-
-
与视频显示的关系:
-
如果未设置视频输出对象,即使媒体包含视频轨道,视频内容也不会显示。
-
如果视频输出对象发生变化,新的视频输出对象将接管视频内容的显示。
-
void audioOutputChanged();
-
描述: 当
QMediaPlayer
的音频输出对象发生变化时,会发出此信号。音频输出对象是用于播放音频的组件,例如QAudioOutput
。 -
使用场景
-
当调用
QMediaPlayer::setAudioOutput(QAudioOutput *)
方法设置新的音频输出对象时,此信号会被触发。 -
可以连接此信号到自定义槽函数,以便在音频输出对象发生变化时执行一些操作,例如更新 UI 或重新配置音频设备。
Q_REVISION(6, 8) void audioBufferOutputChanged();
-
描述: 当
QMediaPlayer
的音频缓冲区输出发生变化时,会发出此信号。音频缓冲区输出通常用于访问音频数据的原始缓冲区,以便进行进一步处理或分析。 -
引入版本: Qt 6.8
-
使用场景
-
当音频缓冲区输出发生变化时(例如音频数据格式或缓冲区大小发生变化),此信号会被触发。
-
可以连接此信号到自定义槽函数,以便在音频缓冲区输出发生变化时执行一些操作,例如重新配置音频处理逻辑或更新 UI。
void tracksChanged();
-
描述: 当媒体的轨道信息(例如音频轨道、视频轨道、字幕轨道等)发生变化时,会发出此信号。
-
使用场景
-
当加载的媒体文件或流的轨道信息发生变化时(例如从单音轨切换到多音轨,或从无字幕切换到有字幕),此信号会被触发。
-
可以连接此信号到自定义槽函数,以便在轨道信息发生变化时执行一些操作,例如更新 UI 或重新配置播放器。
-
注意事项
-
轨道信息的含义:
-
轨道信息包括音频轨道、视频轨道、字幕轨道等。
-
不同媒体格式支持的轨道类型和数量可能不同。
-
-
信号触发时机:
-
当加载的媒体文件包含轨道信息时,此信号会被触发。
-
当媒体源发生变化时(例如调用
setSource()
或setMedia()
),此信号可能会被触发。
-
-
获取轨道信息:
-
可以使用
QMediaPlayer::tracks()
方法获取当前媒体的轨道信息。
-
void activeTracksChanged();
-
描述: 当媒体的活动轨道(例如当前正在使用的音频轨道、视频轨道或字幕轨道)发生变化时,会发出此信号。
-
使用场景
-
当用户切换音频轨道、视频轨道或字幕轨道时,此信号会被触发。
-
可以连接此信号到自定义槽函数,以便在活动轨道发生变化时执行一些操作,例如更新 UI 或重新配置播放器。
-
注意事项
-
活动轨道的含义:
-
活动轨道是指当前正在使用的音频轨道、视频轨道或字幕轨道。
-
用户可以通过播放器界面或 API 切换活动轨道。
-
-
信号触发时机:
-
当用户切换活动轨道时,此信号会被触发。
-
当媒体源发生变化时(例如调用
setSource()
或setMedia()
),此信号可能会被触发。
-
-
获取活动轨道信息:
-
可以使用
QMediaPlayer::activeTracks()
方法获取当前的活动轨道信息。 -
与
tracksChanged
的区别:-
activeTracksChanged
表示当前活动的轨道发生了变化。 -
tracksChanged
表示所有轨道信息发生了变化。
-
-
void errorChanged();
-
描述: 当
QMediaPlayer
的错误状态发生变化时,会发出此信号。错误状态表示播放器在加载或播放媒体时是否发生了错误。 -
使用场景
-
当播放器在加载或播放媒体时发生错误(例如文件损坏、网络连接失败等),此信号会被触发。
-
可以连接此信号到自定义槽函数,以便在错误状态发生变化时执行一些操作,例如显示错误信息或记录日志。
-
注意事项
-
错误状态的含义:
-
错误状态表示播放器在加载或播放媒体时是否发生了错误。
-
可以使用
QMediaPlayer::error()
方法获取当前的错误类型。 -
可以使用
QMediaPlayer::errorString()
方法获取错误的详细描述。
-
-
信号触发时机:
-
当播放器在加载或播放媒体时发生错误,此信号会被触发。
-
如果错误状态未发生变化(例如重复发生相同的错误),此信号不会触发。
-
-
常见的错误类型:
-
QMediaPlayer::NoError
: 没有错误。 -
QMediaPlayer::ResourceError
: 资源错误(例如文件不存在)。 -
QMediaPlayer::FormatError
: 格式错误(例如文件格式不支持)。 -
QMediaPlayer::NetworkError
: 网络错误(例如网络连接失败)。 -
QMediaPlayer::AccessDeniedError
: 访问被拒绝(例如权限不足)。
-
void errorOccurred(QMediaPlayer::Error error, const QString &errorString);
-
描述: 当
QMediaPlayer
在加载或播放媒体时发生错误时,会发出此信号。 -
参数:
-
QMediaPlayer::Error error
: 表示错误的类型,是一个枚举值。 -
const QString &errorString
: 提供错误的详细描述。 -
错误类型(
QMediaPlayer::Error
枚举) -
以下是可能的错误类型:
-
QMediaPlayer::NoError
:-
没有发生错误。
-
-
QMediaPlayer::ResourceError
:-
资源错误,例如文件不存在或无法访问。
-
-
QMediaPlayer::FormatError
:-
格式错误,例如媒体文件格式不受支持。
-
-
QMediaPlayer::NetworkError
:-
网络错误,例如网络连接失败或超时。
-
-
QMediaPlayer::AccessDeniedError
:-
访问被拒绝,例如权限不足。
-
-
QMediaPlayer::ServiceMissingError
:-
缺少必要的媒体服务,例如后端插件未正确安装。
-
使用场景
-
当播放器在加载或播放媒体时发生错误,此信号会被触发。
-
可以连接此信号到自定义槽函数,以便在错误发生时执行一些操作,例如显示错误信息、记录日志或尝试恢复播放。
-
注意事项
-
错误处理:
-
通过
error
参数可以获取错误的类型,从而针对不同的错误类型执行不同的处理逻辑。 -
errorString
参数提供了错误的详细描述,可以用于显示给用户或记录日志。
-
-
信号触发时机:
-
当播放器在加载或播放媒体时发生错误,此信号会被触发。
-
如果错误状态未发生变化(例如重复发生相同的错误),此信号不会触发。
-
-
与
errorChanged
的区别:-
errorOccurred
提供了更详细的错误信息(包括错误类型和错误描述)。 -
errorChanged
仅通知错误状态发生了变化,不提供具体的错误信息。
-
-
-