> 文章列表 > Qt音视频开发30-qmedia内核qt4方案phonon播放(支持视频流)

Qt音视频开发30-qmedia内核qt4方案phonon播放(支持视频流)

Qt音视频开发30-qmedia内核qt4方案phonon播放(支持视频流)

一、前言

在Qt4中如果需要播放视频,一般用phonon多媒体框架,这应该就是Qt5/Qt6中多媒体框架的前身(查阅qmultimedia模块的相关代码可以发现架构几乎雷同,除了部分命名变了以外),phonon多媒体框架本身也是没有内置解码器的,意味着用它实现的功能,依赖本地解码器,在windows上你需要安装k-lite或者LAV Filters,在linux上你需要安装GStreamer(sudo apt-get install gstreamer1.0-libav ubuntu-restricted-extras),不安装的话很可能只能播放MP3/MP4。以前一直以为用phonon多媒体框架只能播放本地文件,其实不是的,他也支持各种视频流,只要本地解码器正常他就都能放。与其他Qt应用程式一样,若有使用到Phonon函式库的应用程式在build的时候都需要额外设定使用Phonon模组,必须要在qmaek project file(即.pro)中加入:QT += phonon 。

整体来说,Phonon的架构只需要记住以下的三东西:

  • media objectPhonon的基础,用於管理多媒体来源。来源可能是影音档等,而能够提供基本的播放控制,例如开始、暂停或结束。而提供多媒体资料给media object的则为media source,在给media object之前通常是raw data,再由media object进行转换。
  • sinks输出多媒体,例如在widget上播放影片或是输出至音效卡(播放音乐)。通常sink是一个播放的装置(例如音效卡等)。而sink只接受media object来的资料,由media object控制播放;