一、QMediaPlayer 功能特性
1.1 媒体播放
`QMediaPlayer`是一个跨平台的多媒体播放类,支持播放音频和视频文件。它通过封装底层的多媒体框架(如 Windows 下的 DirectShow、Linux 下的 GStreamer、macOS 下的 AVFoundation 等),提供了一个统一的 API 接口。
• 支持的媒体类型:可以播放本地文件(如 MP3、MP4、AVI、WMV 等)和网络流媒体(如 HTTP、RTSP、HLS 等)。
• 解码器依赖:`QMediaPlayer`本身不包含解码库,而是依赖系统安装的解码器。在某些平台上,可能需要额外安装解码器(如 K-Lite Codec Pack 或 LAV Filters)来支持更多格式。
1.2 状态管理
`QMediaPlayer`提供了多种状态枚举,用于监控播放器的运行状态和媒体加载状态。
• 播放状态(`QMediaPlayer::State`):
• `StoppedState`:停止状态。
• `PlayingState`:播放状态。
• `PausedState`:暂停状态。
• 媒体状态(`QMediaPlayer::MediaStatus`):
• `UnknownMediaStatus`:未知状态。
• `NoMedia`:无媒体。
• `LoadingMedia`:加载中。
• `LoadedMedia`:加载完成。
• `StalledMedia`:播放停滞。
• `EndOfMedia`:播放结束。
• `InvalidMedia`:无效媒体。
1.3 信号与槽
`QMediaPlayer`提供了一系列信号,用于监控播放状态的变化。
• `stateChanged(QMediaPlayer::State state)`:播放状态改变时发出。
• `positionChanged(qint64 position)`:播放位置改变时发出。
• `durationChanged(qint64 duration)`:媒体总时长改变时发出。
• `mediaStatusChanged(QMediaPlayer::MediaStatus status)`:媒体状态改变时发出。
• `errorOccurred(QMediaPlayer::Error error, const QString &errorString)`:播放器出错时发出。
通过连接这些信号到自定义槽函数,可以实现对播放事件的响应和控制。
1.4 视频输出
`QMediaPlayer`支持多种视频输出组件:
• `QVideoWidget`:一个基于`QWidget`的视频显示组件,适用于简单的视频播放场景。
• `QGraphicsVideoItem`:适用于 Qt 的图形/视图架构(`QGraphicsView`),可以将视频作为一个图形项与其他图形项组合显示,并支持缩放、旋转等功能。
• 自定义视频输出:可以通过继承`QAbstractVideoSurface`类,实现更复杂的视频处理逻辑。
1.5 音频控制
`QMediaPlayer`提供了音频控制功能:
• 音量调节:通过`setVolume(int volume)`方法设置音量,范围为 0 到 100


2656

被折叠的 条评论
为什么被折叠?



