IT评测·应用市场-qidao123.com

标题: QT多媒体播放器类:QMediaPlayer [打印本页]

作者: 耶耶耶耶耶    时间: 2025-3-19 14:18
标题: QT多媒体播放器类:QMediaPlayer
QMediaPlayer 是 Qt Multimedia 模块中的核心类,用于播放音频和视频媒体文件。它支持本地文件、网络流媒体以及及时数据源,具备播放控制、状态管理、元数据访问等功能。QMediaPlayer的基本用法大概包括设置媒体源、控制播放(播放、停息、停止)、调整音量、监听播放状态变化等。
1. 信号(Signals)

信号用于通知外部对象播放器状态、媒体属性和错误变乱的变化。
(1)媒体改变

void mediaChanged(const QMediaContent &media);

void currentMediaChanged(const QMediaContent &media);

(2)状态变化 

void stateChanged(QMediaPlayer::State newState);


void mediaStatusChanged(QMediaPlayer::MediaStatus status)

(3)媒体播放进度

void durationChanged(qint64 duration);

void positionChanged(qint64 position);

(4)音频/视频可用性 

void audioAvailableChanged(bool available);

void videoAvailableChanged(bool videoAvailable);

(5)其他常用信号

void playbackRateChanged(qreal rate);

void seekableChanged(bool seekable);

void mutedChanged(bool muted);

  1. Q_SIGNALS:
  2.     void mediaChanged(const QMediaContent &media);
  3.     void currentMediaChanged(const QMediaContent &media);
  4.     void stateChanged(QMediaPlayer::State newState);
  5.     void mediaStatusChanged(QMediaPlayer::MediaStatus status);
  6.     void durationChanged(qint64 duration);
  7.     void positionChanged(qint64 position);
  8.     void volumeChanged(int volume);
  9.     void mutedChanged(bool muted);
  10.     void audioAvailableChanged(bool available);
  11.     void videoAvailableChanged(bool videoAvailable);
  12.     void bufferStatusChanged(int percentFilled);
  13.     void seekableChanged(bool seekable);
  14.     void playbackRateChanged(qreal rate);
  15.     void audioRoleChanged(QAudio::Role role);
  16.     void customAudioRoleChanged(const QString &role);
  17.     void error(QMediaPlayer::Error error);
复制代码
 2. 槽函数(Slots)

槽函数用于接收外部指令(如用户点击按钮)来控制播放器举动。
  1. public Q_SLOTS:
  2.     void play();
  3.     void pause();
  4.     void stop();
  5.     void setPosition(qint64 position); //跳转到指定时间位置
  6.     void setVolume(int volume);
  7.     void setMuted(bool muted);
  8.     void setPlaybackRate(qreal rate);
  9.     void setMedia(const QMediaContent &media, QIODevice *stream = nullptr);
  10.     void setPlaylist(QMediaPlaylist *playlist);
复制代码
3. 枚举(enum)

  1. enum State
  2. {
  3.     StoppedState,       // 停止状态
  4.     PlayingState,      // 播放状态
  5.     PausedState         // 暂停状态
  6. };
复制代码
  1. enum MediaStatus
  2. {
  3.     UnknownMediaStatus,   // 未知状态(初始化值)
  4.     NoMedia,              // 无媒体关联
  5.     LoadingMedia,          // 正在加载媒体
  6.     LoadedMedia,           // 媒体已加载完成
  7.     StalledMedia,          // 播放卡顿(解码阻塞)
  8.     BufferingMedia,        // 缓冲中(网络流场景)
  9.     BufferedMedia,         // 已缓冲部分(可跳过前奏)
  10.     EndOfMedia,            // 到达媒体末尾
  11.     InvalidMedia            // 媒体格式/内容无效
  12. };
复制代码
  1. enum Flag
  2. {
  3.     LowLatency = 0x01,       // 低延迟模式(实时性优化)
  4.     StreamPlayback = 0x02,   // 流式播放模式(边下边播)
  5.     VideoSurface = 0x04       // 指定视频渲染表面(GPU加速)
  6. };
  7. Q_DECLARE_FLAGS(Flags, Flag) // 允许位运算组合
复制代码
  1. enum Error
  2. {
  3.     NoError,               // 无错误(默认值)
  4.     ResourceError,          // 资源不可用(内存不足/文件损坏)
  5.     FormatError,            // 格式不支持(如非MP4/WAV)
  6.     NetworkError,           // 网络连接问题(断网/CORS)
  7.     AccessDeniedError,       // 权限被拒绝(存储权限/DRM)
  8.     ServiceMissingError,    // 依赖服务缺失(如云播放服务)
  9.     MediaIsPlaylist          // 试图播放播放列表项(需选择具体媒体)
  10. };
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4