精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

QT FFMPEG 播放器

移動開發
本文簡單的介紹不用SDL實現QT+FFMPEG播放器。SDL是為游戲開發的,大量的依賴硬件加速,不用sdl是為了能方便的將程序移植到其他的平臺。本程序僅用了Qwideg來顯示,就是為了移植方便。ffmpeg用C寫的可以向多種平臺移植

不用SDL 的QT+FFMPEG 播放器,內容如下:

1、不用SDL的理由

SDL是為游戲開發的,大量的依賴硬件加速。不用sdl是為了能方便的將程序移植到其他的平臺 。本人受條件限制未向其他系統移植。但由于沒采用QTffmpeg)之外的其他第三方代碼,相信移植是個很小的問題。本人曾經做過arm920+qt+linux(fambuffer)的開發。

本程序僅用了Qwideg來顯示,就是為了移植方便。ffmpeg用C寫的可以向多種平臺移植。

2、如何實現音頻視頻同步

本范例采用系統時鐘作為主時鐘,用音頻時鐘校正主時鐘。

3、如何實現多趨緩沖

本范例采用多線程處理機制。

(1)QFfmpeg :主要負責讀取數據包,存入QList列表.壓縮前的數據占用空間小。緩沖大小可設,按視頻幀數和聲卡緩沖大小決定

(2)QAudioThread:音頻解碼

(3)QVideoThread:視頻解碼

(4)QFfPlay :播放 (沒有用定時器,定時器誤差太大)

4、本范例實現QT+ffmpeg播放器的基本功能。

僅出于愛好開發,未進行系統排錯,用于大家參考交流。 在開發期間參考了ffplay 。

5、實現在QT4.6 QT4.7forwindows版編譯運行,內存無重大泄露

cpp代碼

  1.  #ifndef QFFMPEG_H    
  2.  #define QFFMPEG_H    
  3.  #include <QThreadPool>    
  4.  #include <QRunnable>    
  5.  #include <QWidget>    
  6.  #include <QAudioDeviceInfo>    
  7.  #include <QAudioOutput>    
  8.  #include <QAudioFormat>    
  9.  #include <QThread>    
  10.  #include <QImage>    
  11.  #include <QMutex>    
  12.  #include <QTime>    
  13.  #include <QPainter>    
  14.  #include <QIODevice>    
  15.  #include <QWaitCondition>    
  16.  #include <QSemaphore>    
  17.  #include <QReadWriteLock>    
  18.  #include <QDebug>      
  19.  #include <stdlib.h>    
  20.  #include <stdio.h>    
  21.  #include <memory.h>//注意要包含此頭文件與qDebug函數相關    
  22.  #include <stdint.h>    
  23.  #include <QList>    
  24.  extern "C"   
  25.  {    
  26.  //ffmpeg相關的頭文件    
  27.  #include <libavcodec/avcodec.h>    
  28.  #include <libavutil/common.h>    
  29.  #include <libavutil/avstring.h>    
  30.  #include <libavcodec/avcodec.h>    
  31.  #include <libavformat/avformat.h>    
  32.  #include <libswscale/swscale.h>    
  33.  #include <libavcodec/opt.h>    
  34.  #include <libavformat/avio.h>    
  35. //#include <libavdevice/avdevice.h>    
  36. }    
  37.  //播放信息    
  38.  #define DEFAULT_IMAGEFMT QImage::Format_RGB32    
  39.  #define DEFAULT_FRAMEFMT PIX_FMT_RGB32    
  40.  #define MAX_AUDIO_DIFFTIME 1000000  //音頻時間差,最大值    
  41. 1 #define AUDIOBUFFERSIZE (AVCODEC_MAX_AUDIO_FRAME_SIZE * 3) / 2 //音頻緩沖大小    
  42.  #define MAX_BUFFER 50    
  43.  class QMasterClock //主時鐘    
  44.  {    
  45.  public:    
  46.      QMasterClock();    
  47.      void adjusttime(int us);    
  48.      qint64 getuscurtime();    
  49.      void setstarttime(QTime t);    
  50.  protected:    
  51.     QReadWriteLock m;    
  52.      QTime starttime;    
  53.  };    
  54.  class QDecodecThread : public QThread    
  55.  {    
  56.     Q_OBJECT    
  57.  public:    
  58.      QDecodecThread(AVFormatContext *f,AVCodecContext *c,QMasterClock *cl,int index,QObject *parent=0);    
  59.     ~QDecodecThread();    
  60.      void run()=0;    
  61.      void setstreamindex(const int index);    
  62.     int getstreamindex() ;    
  63.      int getusdtime() ;    
  64.      void setusdtime(int dt);    
  65.     void setisend(const bool b);    
  66.      void lockdata();    
  67.      void unlockdata();    
  68.      int getcount() ;    
  69.     void putpacket(AVPacket *p);    
  70.     void free_packet(AVPacket *p);    
  71.      AVPacket* getpacket();    
  72.      qint64 getus(qint64 t);    
  73.     QSemaphore sempfree;    
  74. protected:    
  75.      AVCodecContext *actx; //解碼器    
  76.     AVFormatContext  *formatctx;    
  77.    int stream_index;    
  78.      QMasterClock *masterclock;    
  79.      QSemaphore semp;     
  80.      bool isend;      
  81.     QList <AVPacket*> pkts;    
  82.     int usdtime;//時間差值,用于修正主時鐘    
  83.      QMutex mutex;    
  84.     qint64 basetime;    
  85.  };    
  86.  class QAudioThread : public QDecodecThread    
  87.  {    
  88.     Q_OBJECT    
  89.  public:    
  90.     QAudioThread(AVFormatContext *f,AVCodecContext *c,QMasterClock *cl,int index,QObject *parent=0);    
  91.      ~QAudioThread();    
  92.      QAudioOutput* getaudio();    
  93.      void run();    
  94.     void play();    
  95.     int ffsampleratetoint(const SampleFormat sf);    
  96.      qint64 caltime(const uint64_t pts);    
  97.  public slots:    
  98.   void notified();    
  99.    void audiostate(QAudio::State state);    
  100.  protected:    
  101.     int writeaudio(char *data ,const int size);    
  102.     QAudioOutput *audio;    
  103.    QIODevice *audioIO;    
  104.  };    
  105.  class QVideoThread : public QDecodecThread    
  106.  {    
  107.   Q_OBJECT    
  108.  public:    
  109.     QVideoThread(AVFormatContext *f, AVCodecContext *c,QMasterClock *cl,int index,QObject *parent=0);    
  110.    ~QVideoThread();    
  111.     qint64 getframebuffer(char *data);    
  112.     int getwidth() const;    
  113.     int getheight() const;    
  114.    int getframesize();    
  115.     void run();        
  116.  protected:    
  117.    SwsContext *m_img_convert_ctx;//圖像轉換設置    
  118.    char *framebuffer;    
  119.     int framebuffersize;    
  120.    qint64 pts;    
  121.     QWaitCondition videowait;    
  122.  private:    
  123.    AVFrame *yuvframe;    
  124.    AVFrame *rgbframe;    
  125.  };    
  126.  class QSubtitleThread : public QDecodecThread    
  127.  {    
  128.   ,Q_OBJECT    
  129. public:    
  130.     QSubtitleThread(AVFormatContext *f,AVCodecContext *c,QMasterClock *cl,int index,QObject *parent=0)    
  131.         :QDecodecThread(f,c,cl,index,parent)    
  132.     {}    
  133.     void run(){}    
  134.  };    
  135.  class QFfWidget : public QWidget    
  136.  {    
  137.     Q_OBJECT    
  138.  public:    
  139.      explicit QFfWidget(QWidget *parent = 0);    
  140.     ~QFfWidget();    
  141.    void setframe(QImage *f);    
  142.     void lockframe();    
  143.      void unlockframe();    
  144.  private:    
  145.    QImage *frame;    
  146.      QMutex m;    
  147.  protected:    
  148.     void paintEvent(QPaintEvent *);        
  149.  };        
  150.  class QFfplay : public QThread    
  151.  {    
  152.      Q_OBJECT    
  153. public:    
  154.      QFfplay(QVideoThread *v,QMasterClock *c, QObject *parent);    
  155.      ~QFfplay();    
  156.     QWidget* getwidget();    
  157.  protected:    
  158.      void run();    
  159.     QVideoThread *video;    
  160.     QMasterClock *masterclock;    
  161.      QImage *frame;    
  162.     char *framebuffer;    
  163.      QFfWidget *widget;       
  164.  };    
  165.  class QFfmpeg : public QThread    
  166. {    
  167.     Q_OBJECT    
  168.  public:    
  169.     explicit QFfmpeg(QObject *parent);    
  170.     //設置參數    
  171.     void seturl(QString url);    
  172.      bool open();    
  173.      void close();    
  174.     bool play();    
  175.      void stop();    
  176.    //判斷視頻是否結束    
  177.      bool atEnd();    
  178.      bool IsOpen();    
  179.      QWidget* getwidget();   
  180.  signals:        
  181. public slots:    
  182.  protected:       
  183.      void run();    
  184.  private:    
  185.     /****解碼相關******************/   
  186.     char m_url[255];    
  187.      SwsContext *m_img_convert_ctx;//圖像轉換設置    
  188.     AVFormatContext *m_pFormatctx; //視頻流    
  189.     QAudioThread *m_audiocodec; //音頻解碼器    
  190.     QVideoThread *m_videocodec; //視頻解碼器    
  191.      QSubtitleThread *m_subtitlecodec; //字幕解碼器    
  192.     QMasterClock masterclock;    
  193.      QImage *m_frame;    
  194.      uint8_t* framebuffer;//圖象存儲區 m_rgbframe m_frame 共享    
  195.      QMutex m_mutex;    
  196.     QFfplay *ffplay;    
  197.     bool m_isopen;        
  198.  };        
  199. #endif // QFFMPEG_H  

以上是代碼實現。

【編輯推薦】

在Qt中如何寫控制臺程序

解析 QT 靜態庫和動態庫

不可忽視的病毒傳播者之MP3播放器

 基于QT前端的Mplayer播放器項目之功能體驗

基于QT前端的Mplayer播放器項目之PC環境下的實現過程

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-06-27 11:23:21

Qt 音樂播放器

2011-06-24 10:21:11

Qt phonon 多媒體

2023-03-06 16:20:08

視頻播放器VLC

2011-09-06 10:46:19

QT播放器

2011-09-06 11:08:21

QT播放器Mplayer

2022-08-16 17:37:06

視頻播放器鴻蒙

2011-06-10 13:42:50

QT mplayer 播放器

2011-09-06 11:25:08

2010-07-30 09:35:47

Flex播放器

2011-07-20 16:21:20

iPhone 視頻 播放器

2011-09-09 11:28:35

Android Mus

2011-09-05 18:08:01

MTK音頻播放器

2015-05-21 15:25:42

VLC播放器

2012-05-03 09:51:09

HTML5

2014-12-31 16:52:53

音樂播放器源碼

2018-05-25 14:37:58

2010-06-11 12:53:56

openSUSE播放器

2009-12-17 15:10:31

Linux音樂播放器

2022-06-21 14:41:38

播放器適配西瓜視頻

2011-06-10 14:06:32

QT mplayer
點贊
收藏

51CTO技術棧公眾號

亚洲av无码一区二区三区网址| 一本久久a久久精品vr综合| 国产午夜福利一区二区| 加勒比久久高清| 色婷婷激情综合| 亚洲一区影院| 人妻与黑人一区二区三区| 美日韩精品视频| 久久影院资源网| 少妇饥渴放荡91麻豆| 欧美综合影院| 精品福利一区二区| 制服诱惑一区| 天堂在线一二区| 国产专区综合网| 日本久久中文字幕| 人妻少妇精品一区二区三区| 免费看成人吃奶视频在线| 欧美一区二区三区四区在线观看 | 91毛片在线观看| 国产精品久久久久久婷婷天堂| 欧美黄片一区二区三区| 色综合综合网| 欧美成人a在线| 9l视频白拍9色9l视频| 91美女精品| 亚洲欧美日韩系列| 日本在线观看一区二区三区| 色哟哟国产精品色哟哟| 国产一区二区三区黄视频 | 国产精品12345| 黄网站免费在线播放| 久久久国产午夜精品| 国产一区二区丝袜高跟鞋图片| 日本一级片免费看| 亚洲欧洲日韩| 中文字幕亚洲一区二区三区五十路| 亚洲av人人澡人人爽人人夜夜| 亚洲欧美在线人成swag| 欧美在线制服丝袜| 大肉大捧一进一出好爽动态图| 精品一性一色一乱农村| 国产精品你懂的| 日韩久久不卡| 国产乱视频在线观看| 久久中文娱乐网| 蜜桃传媒一区二区| 熟妇人妻系列aⅴ无码专区友真希 熟妇人妻av无码一区二区三区 | 97在线播放视频| aaa在线播放视频| 一区二区三区不卡在线观看| japanese在线视频| 麻豆视频在线观看免费| 国产精品传媒视频| 亚洲黄色成人久久久| 国产精品久久一区二区三区不卡| www国产成人| 玛丽玛丽电影原版免费观看1977| 婷婷综合激情网| 91丨porny丨国产| 精品日韩电影| 免费观看成年在线视频网站| 26uuu亚洲综合色| 欧美一区三区二区在线观看| 国产在线超碰| 中文字幕 久热精品 视频在线| 神马影院一区二区| 69视频在线| 亚洲欧洲精品一区二区三区| xxxxxx在线观看| 黄色的视频在线观看| 亚洲福利一区二区| 免费黄色福利视频| 日韩在线观看不卡| 欧美日韩小视频| 69久久精品无码一区二区| 美女精品久久| 日韩av在线最新| 亚洲理论片在线观看| 日韩欧美一区二区三区免费看| 久久人人爽人人爽人人片亚洲| 麻豆疯狂做受xxxx高潮视频| 亚洲调教视频在线观看| 欧美综合激情网| 久久国产香蕉视频| 国产精品自在欧美一区| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久蜜柚 | 日本视频精品一区| 黄色网在线看| 偷拍亚洲欧洲综合| 亚洲黄色av网址| 欧美经典影片视频网站| 亚洲国产精品国自产拍av秋霞 | 亚洲精品亚洲人成在线| 中文字幕亚洲第一| 久一视频在线观看| 日韩中文字幕亚洲一区二区va在线 | 一本久久a久久精品vr综合| 欧美78videosex性欧美| 日本精品一级二级| 少妇性l交大片7724com| 九九综合九九| 欧美老肥婆性猛交视频| 婷婷激情五月综合| 床上的激情91.| 日韩精品第一页| 国产蜜臀一区二区打屁股调教| 色噜噜狠狠成人网p站| 国产成人精品一区二区在线小狼 | 日韩av在线播放资源| 二区三区四区视频| 国产日韩欧美一区二区三区在线观看| 国产欧美一区二区三区久久人妖| 日批视频免费播放| 最新中文字幕一区二区三区 | 国产ts在线观看| 国产精品国精产品一二| 欧美亚洲精品一区| 精品人妻一区二区三区日产| 外国成人激情视频| 国产精品91在线| 香蕉视频911| 一级精品视频在线观看宜春院 | 成人在线视频一区二区| 中文字幕欧美日韩一区二区| 日韩影片中文字幕| 亚洲黄色有码视频| 久草网站在线观看| 久久丁香综合五月国产三级网站| 久久亚洲免费| 成人观看网址| 精品久久久久久最新网址| 潘金莲一级黄色片| 麻豆免费看一区二区三区| 欧美激情视频一区二区三区| av中文字幕在线看| 精品美女在线观看| 免费一级全黄少妇性色生活片| 美腿丝袜亚洲综合| 亚洲国产欧洲综合997久久 | 亚洲一区中文字幕| 蜜芽在线免费观看| 欧美裸体bbwbbwbbw| 91狠狠综合久久久久久| 日韩黄色一级片| 欧美日韩天天操| 色多多在线观看| 日韩精品中文字幕有码专区| 国产精品免费av一区二区| 成人精品在线视频观看| 国产美女在线一区| 国偷自产视频一区二区久| 国内精品免费午夜毛片| 女人18毛片水真多18精品| 亚洲国产精品一区二区www| 国产国语老龄妇女a片| 一区精品久久| 久久精品中文字幕一区二区三区| 欧美aa在线观看| 亚洲精品综合久久中文字幕| 中文字幕亚洲乱码熟女1区2区| 久久色视频免费观看| 国产在线观看福利| 蜜桃精品wwwmitaows| 7m精品福利视频导航| 你懂得在线网址| 一本到高清视频免费精品| 谁有免费的黄色网址| 日韩高清一区二区| 三区精品视频| 91丨精品丨国产| 欧美激情精品久久久久久蜜臀| 丰满肉嫩西川结衣av| 午夜精品影院在线观看| 亚洲av综合一区二区| 136国产福利精品导航网址| 好吊色欧美一区二区三区四区| 老司机2019福利精品视频导航| 一区二区亚洲欧洲国产日韩| 国产精品乱码久久久| 亚洲国产成人精品视频| 亚洲人人夜夜澡人人爽| 日韩va欧美va亚洲va久久| 日本特级黄色大片| 98视频精品全部国产| 欧美一级免费看| 亚洲精品承认| 亚洲精品在线三区| 区一区二在线观看| 亚洲视频碰碰| 亚洲成人aaa| 波多野结衣人妻| 一区二区三区中文在线观看| 在线观看国产三级| 麻豆91在线播放免费| 日韩精品一区二区三区四| 免费欧美一区| 97夜夜澡人人双人人人喊| 亚洲精品一区| 欧美国产日韩在线| 国产视频精选在线| 精品欧美乱码久久久久久| 最新中文字幕在线观看视频| 亚洲一区二区高清| 欧美自拍偷拍网| 成人午夜电影网站| jizz大全欧美jizzcom| 日韩天堂av| 久久av秘一区二区三区| 妖精视频一区二区三区免费观看 | 美女av免费在线观看| 99久久www免费| 免费成人av网站| 亚洲大奶少妇| 91久久在线播放| 秋霞国产精品| 456亚洲影院| 麻豆福利在线观看| www.日韩视频| 黄色在线播放| 日韩国产精品视频| 亚洲高清视频网站| 欧美剧情片在线观看| 久久久精品毛片| 黄色成人av在线| 久久久久久欧美精品se一二三四| 国产精品美女一区二区| 精品久久久久久中文字幕人妻最新| 国产另类ts人妖一区二区| 久久久精品麻豆| 老鸭窝毛片一区二区三区 | 18video性欧美19sex高清| 日韩有码在线视频| 福利在线播放| 亚洲人成人99网站| 五月婷婷久久久| 亚洲精品一区二区三区在线观看| 国产毛片毛片毛片毛片| 欧美日韩你懂的| 波多野结衣视频观看| 91国产成人在线| 高潮毛片又色又爽免费| 色综合色狠狠综合色| 国内免费精品视频| 精品欧美激情精品一区| wwwxxx亚洲| 狠狠久久亚洲欧美专区| 欧美一区二区激情视频| 欧美日韩视频免费播放| 亚洲欧美在线视频免费| 狠狠久久五月精品中文字幕| 狠狠人妻久久久久久| 色综合久久久久综合体| www.国产毛片| 欧美一a一片一级一片| 中文字幕欧美色图| av手机免费看| 中文字幕av一区 二区| av永久免费观看| 国产精品麻豆久久久| 日本美女黄色一级片| 亚洲男同1069视频| 久久久国产成人| 五月综合激情婷婷六月色窝| 欧美一区二区激情视频| 在线免费不卡视频| 国产精品久久婷婷| 日韩精品一区在线观看| 免费看黄网站在线观看| 精品一区电影国产| 成人午夜在线观看视频| 久久精品久久久久电影| 日本在线视频www鲁啊鲁| 国内免费久久久久久久久久久| 成人国产电影在线观看| 77777少妇光屁股久久一区| 最新国产中文字幕| 91精品福利在线| 国产乱码77777777| 欧美性猛交xxxxx水多| 免费一级片在线观看| 日韩欧美二区| thepron国产精品| 欧美aaaaa成人免费观看视频| 3d成人h动漫网站入口| 91中文字幕在线观看| a天堂中文字幕| 一区二区三区四区视频免费观看| 久久精品视频网| 久久久亚洲国产| 欧产日产国产精品98| 99reav在线| 亚洲国产日本| 欧美日韩在线三区| 欧美激情第6页| 中文 日韩 欧美| 婷婷伊人综合中文字幕| 美女毛片一区二区三区四区最新中文字幕亚洲 | 亚洲欧美春色| 在线精品视频小说1| 97人人做人人人难人人做| 9191在线视频| 精品人妻一区二区三区日产乱码| 亚洲日本视频在线| 成人亚洲精品久久久久软件| 日韩高清中文字幕| 黄色网络在线观看| 手机看片福利在线| 麻豆精品一区二区av白丝在线| www.99在线| 久色婷婷小香蕉久久| 你懂得在线视频| 亚洲欧美日韩中文播放| 日韩精品1区2区| 精品剧情v国产在线观看在线| 国内av一区二区三区| 美女少妇精品视频| 成人精品国产亚洲| 91情侣在线视频| 精品国产乱码| 成人精品视频在线播放| 精品一区二区三区免费播放| 熟女人妻在线视频| 国产精品视频一二三区| 国产精品午夜影院| 欧美一区二区二区| 欧美精品hd| 日本精品免费一区二区三区| 日韩精品一级| 日本不卡一区二区三区四区| 先锋亚洲精品| 亚洲一区二区三区观看| 国产女同互慰高潮91漫画| 国产一级aa大片毛片| 欧美一区二区三区视频| 激情小说 在线视频| 97色在线视频| 最新国产一区二区| 亚洲天堂成人在线观看| 玖玖爱免费视频| 欧美视频完全免费看| 日韩私人影院| 欧美一级片在线播放| 香蕉成人app| 樱花www成人免费视频| 蜜臀a∨国产成人精品| 魔女鞋交玉足榨精调教| 色偷偷一区二区三区| 人妻少妇精品无码专区久久| 久久久精品国产亚洲| 韩国三级成人在线| 一本色道久久综合亚洲精品婷婷| 国产精品porn| 好吊操视频这里只有精品| 亚洲欧美日韩国产中文在线| 国产美女裸体无遮挡免费视频| 中文字幕精品久久久久| 日本不卡一二三| 日韩影视精品| 奇米色一区二区| 亚洲av综合一区二区| 欧美性生交片4| 二区三区在线播放| 国产日韩欧美在线看| 日韩高清欧美| 中文字幕第88页| 亚洲欧美激情小说另类| 国产日韩精品suv| 欧美国产亚洲精品久久久8v| 国产高潮流白浆喷水视频| 欧美国产精品一区二区三区| √资源天堂中文在线| 亚洲美女中文字幕| 欧美xxxhd| 色综合666| 精品一区二区三区免费毛片爱| 日韩精品无码一区二区三区久久久| 91黄视频在线观看| sese一区| av一区二区三区免费| 国色天香一区二区| 久久久久国产免费| 精品久久久久久久久久| 精品一二三区视频| 91香蕉电影院| 亚洲香蕉网站| 成人在线视频免费播放| 在线免费观看一区| 成人福利片网站| 久久久亚洲综合网站| 日本午夜精品一区二区三区电影| 成人做爰视频网站| 亚洲成人免费在线视频| 精品91久久| 日本中文字幕一级片| 99精品视频在线观看免费| 自拍偷拍第八页| 欧美国产亚洲视频| 欧美日韩大片免费观看| 奇米视频888|