QMediaPlayer的信号详细介绍

    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 表示当前的媒体状态,如 NoMediaLoadingMediaLoadedMediaStalledMediaBufferingMediaBufferedMediaEndOfMediaInvalidMedia 等。

    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 仅通知错误状态发生了变化,不提供具体的错误信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值