精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

free性欧美| www.天堂av.com| 国产在线观看91一区二区三区| 日本丰满少妇一区二区三区| 中国人体摄影一区二区三区| 亚洲av无码乱码国产精品| 亚洲尤物在线| 美女啪啪无遮挡免费久久网站| 美女扒开腿免费视频| 黄瓜视频成人app免费| 亚洲美女偷拍久久| 欧美日韩在线播放一区二区| jizz中国女人| 久久一日本道色综合久久| 久久天天躁日日躁| 瑟瑟视频在线观看| 日韩欧美中文字幕在线视频| 在线欧美日韩精品| 无码 制服 丝袜 国产 另类| 9191在线| 久久久精品免费观看| 99精彩视频| 亚洲视频在线观看免费视频| 在线亚洲一区| 久久99青青精品免费观看| www.黄色在线| 欧洲vs亚洲vs国产| 日韩欧美国产三级电影视频| 欧美大尺度做爰床戏| av男人的天堂在线观看| 亚洲摸摸操操av| 亚洲精品国产一区| 国产在线观看网站| 波多野结衣中文字幕一区| 亚洲free嫩bbb| 最近中文字幕免费在线观看| 免费亚洲一区| 5566成人精品视频免费| 国产一级av毛片| 正在播放日韩欧美一页| www.久久久久久.com| 97人妻人人揉人人躁人人| 色婷婷综合久久久久久| 精品成人一区二区| japanese在线观看| 国产精品白丝av嫩草影院| 在线精品视频在线观看高清| 欧美天堂亚洲电影院在线观看| 亚洲欧美国产视频| 国产极品一区二区| 日本韩国欧美中文字幕| 婷婷激情综合| 色哟哟网站入口亚洲精品| 免费人成又黄又爽又色| 亚洲a级精品| 精品视频久久久久久| 国产人妻黑人一区二区三区| silk一区二区三区精品视频| 欧美精品一区在线观看| 亚洲精品久久久久久| 欧美激情三级| 亚洲电影免费观看高清| 三级电影在线看| 国产精品三级| 色噜噜狠狠狠综合曰曰曰| 蜜桃av免费观看| 先锋资源久久| 欧美高清在线观看| 亚洲精品77777| 久久黄色网页| 国产男女猛烈无遮挡91| 国产理论片在线观看| 国产不卡一区视频| 久久99久久99精品蜜柚传媒| 你懂的在线播放| 国产精品激情偷乱一区二区∴| 亚洲永久激情精品| 污影院在线观看| 精品毛片网大全| 爆乳熟妇一区二区三区霸乳| 日本亚洲欧洲无免费码在线| 欧美一级高清片在线观看| zjzjzjzjzj亚洲女人| 欧美激情极品| 久久久久久久福利| 羞羞视频在线观看不卡| 一区二区三区在线免费视频| 亚洲 欧美 综合 另类 中字| 亚洲风情在线资源| 欧美色爱综合网| 中文字幕 欧美 日韩| 鲁大师精品99久久久| 这里精品视频免费| 欧美三级日本三级| 亚洲在线黄色| 91免费高清视频| 无码精品人妻一区二区| 国产精品视频在线看| 亚洲精品蜜桃久久久久久| 日韩精选视频| 日韩欧美亚洲国产精品字幕久久久| 精品熟女一区二区三区| 欧美韩日一区| 国模精品系列视频| 亚洲在线免费观看视频| www.视频一区| 国产精品一二三在线观看| 亚洲男人av| 日韩欧美激情四射| 成人欧美一区二区三区黑人一| 亚洲黄色视屏| 亚洲自拍小视频| 国产精品四虎| 欧美日韩国产中文字幕| 久久久福利影院| 精品国产一区二区三区噜噜噜| 欧美精品一二区| 中文字幕乱码一区二区| 91亚洲精华国产精华精华液| 在线观看日韩羞羞视频| 国产精品高清乱码在线观看| 欧美精品一区二区高清在线观看| 色撸撸在线视频| 99国产精品视频免费观看一公开| 成人午夜高潮视频| av电影在线网| 在线影视一区二区三区| 亚洲天堂成人av| 精品999网站| 91精品黄色| 国产精品一卡二卡三卡| 欧美亚洲一区二区在线观看| 自拍偷拍视频亚洲| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品日韩一区二区三区| 2020国产在线视频| 欧美一卡二卡三卡| 亚洲欧美小视频| 韩国av一区二区三区四区| 亚洲成人第一| 韩日精品一区| 亚洲色图色老头| 无码人妻丰满熟妇精品| 久久看人人爽人人| 黑人糟蹋人妻hd中文字幕| 欧美深夜视频| 国产91在线播放九色快色| 日本福利午夜视频在线| 色婷婷香蕉在线一区二区| 国产精品无码一区二区三区免费 | 日韩视频免费观看高清完整版在线观看| 免费人成又黄又爽又色| 三级精品在线观看| 日韩精品一区二区三区外面| 中韩乱幕日产无线码一区| 一色桃子一区二区| 91av久久久| 亚洲人一二三区| 亚洲午夜精品在线观看| 亚洲视频高清| 久久爱av电影| 欧洲成人一区| 日韩一区二区三区在线播放| 国产免费无遮挡| 亚洲国产成人精品视频| 自拍视频一区二区| 日韩高清电影一区| 中文字幕欧美日韩一区二区三区 | 久久久久久99| 天天免费亚洲黑人免费| 三级精品视频久久久久| 国产日韩免费视频| 理论不卡电影大全神| 成人视屏免费看| 丁香六月激情婷婷| 美女久久99 | 最新日韩三级| 日韩视频在线免费| 高清一区二区三区四区| 色悠悠亚洲一区二区| 奇米网一区二区| 国产成人在线观看| 1024精品视频| 外国成人免费视频| 国产一区二区三区免费不卡| 97欧美成人| 久久久亚洲天堂| 国产女人在线视频| 日韩精品一区二区三区视频在线观看| 日韩视频免费观看高清| 国产精品激情偷乱一区二区∴| 国产精品偷伦视频免费观看了| 亚洲一区二区三区高清不卡| 亚洲一区三区视频在线观看| 欧美国产不卡| 91久久嫩草影院一区二区| 久久男人天堂| 久久久精品一区| 青青草观看免费视频在线| 欧美肥妇毛茸茸| 国产99久久久| 亚洲一区二三区| 欧美成人另类视频| 不卡av免费在线观看| 免费成年人高清视频| 国产精品日本| 超碰97在线看| av一区二区在线播放| 国产一区二区三区四区五区在线| 婷婷久久综合九色综合99蜜桃| 97在线免费视频| 国精产品一区| 国产亚洲日本欧美韩国| 天天躁日日躁狠狠躁伊人| 91精品免费观看| 特级西西444www大胆免费看| 午夜精品福利一区二区三区av| 欧美xxxooo| 国产欧美精品一区二区色综合| 中国xxxx性xxxx产国| 国产九色精品成人porny| 韩国日本在线视频| 亚洲一区二区成人| 欧美这里只有精品| 欧美a级在线| 中文字幕久久综合| 日韩在线观看电影完整版高清免费悬疑悬疑| 精品欧美国产| 精品视频高潮| 国产精品一区二区三区四区五区| 久久9999免费视频| 91免费视频国产| 亚洲精品66| 国产欧美日韩精品在线观看| 三上悠亚激情av一区二区三区| 欧美一级电影在线| 日本在线播放一二三区| 97免费视频在线| 黄色在线网站噜噜噜| 性色av一区二区三区在线观看| 污片视频在线免费观看| 欧美老女人xx| 国产理论电影在线| 欧美极品在线播放| 99thz桃花论族在线播放| 国语自产精品视频在免费| 国产丝袜精品丝袜| 97免费中文视频在线观看| 国产精品vvv| 欧美一区二区三区艳史| 三上悠亚国产精品一区二区三区| 国产ts一区二区| 日韩精品三区| 国产精品一区=区| 国产亚洲高清在线观看| 99国内精品久久久久久久软件| 91亚洲无吗| 久久99九九| 日韩精品看片| 蜜臀av.com| 亚洲精选在线| 538在线视频观看| 国产一区在线精品| youjizz.com国产| 久久久综合精品| 免费观看特级毛片| 亚洲美女在线国产| 国偷自拍第113页| 欧美日韩综合在线免费观看| a天堂在线视频| 日韩精品视频免费| 天天综合视频在线观看| 欧美国产日本高清在线| 两个人看的在线视频www| 国产精品普通话| 一区二区在线免费播放| 免费精品视频一区| 999国产精品| 大j8黑人w巨大888a片| 免费观看成人鲁鲁鲁鲁鲁视频| 久久久久久久久久毛片| 91亚洲大成网污www| 任我爽在线视频| 红桃av永久久久| 亚洲综合精品在线| 亚洲精品久久久久| 91短视频版在线观看www免费| 欧美巨大黑人极品精男| 一区二区三区短视频| 国产一区红桃视频| 欧美福利在线播放网址导航| 一区二区在线高清视频| 一区二区三区成人精品| 在线观看国产福利| 91视频观看视频| 久久久久久久久久久久久女过产乱| 欧美日韩国产页| 国产夫妻在线观看| 在线视频日韩精品| 91九色porn在线资源| 国产欧美精品在线| 日韩有码av| 成人在线免费高清视频| 日本大胆欧美人术艺术动态 | 26uuu亚洲综合色| 亚洲二区在线播放| 91精品福利视频| 丰满人妻熟女aⅴ一区| 中文字幕不卡av| 亚洲优女在线| 国产精品久久久久久久天堂第1集| 日韩欧美高清| 91看片就是不一样| youjizz久久| 国产亚洲精品av| 91精品国产综合久久久蜜臀粉嫩 | 国产一区欧美二区三区| 秋霞影院一区二区三区| 国产一级大片免费看| 蜜桃一区二区三区在线观看| 成人片黄网站色大片免费毛片| 亚洲一卡二卡三卡四卡无卡久久| 国产喷水吹潮视频www| 尤物tv国产一区| 日本精品裸体写真集在线观看| 激情五月综合色婷婷一区二区| 亚洲欧美亚洲| 国产精品999.| 亚洲精品高清在线观看| 99热这里只有精品在线观看| 精品国产拍在线观看| 精品女同一区二区三区在线观看| 日韩欧美一区二区三区久久婷婷| 国产毛片一区| 成都免费高清电影| 欧美性生交xxxxxdddd| 天天色综合久久| 91av福利视频| 欧美人妖视频| 日韩中文字幕三区| 91视频在线看| 伊人中文字幕在线观看| 国产亚洲精品久久久久久牛牛| 欧美舌奴丨vk视频| 日韩精品欧美在线| 蜜桃免费网站一区二区三区| av在线免费播放网址| 欧美高清视频在线高清观看mv色露露十八 | 日韩av在线看| 日本三级一区| 日本不卡二区| 看国产成人h片视频| 久久成人小视频| 日韩视频在线永久播放| 国产三线在线| 蜜桃精品久久久久久久免费影院 | 亚洲xxx拳头交| 中文字幕人妻无码系列第三区| 一区二区三区在线免费观看 | 深夜成人在线观看| 久久精品免视看国产成人| 日本大胆人体视频| 91美女精品福利| 在线观看不卡的av| 久久99青青精品免费观看| 欧美黑人巨大videos精品| 已婚少妇美妙人妻系列| 国产精品麻豆网站| 亚洲av无码国产精品久久不卡| 97国产成人精品视频| 国产亚洲精品美女久久久久久久久久| 日本中文字幕精品—区二区| 亚洲精品久久久蜜桃| 天堂成人在线| 国产在线播放91| 精品电影一区| 丰满的亚洲女人毛茸茸| 欧美一区二区精品在线| 日本在线播放一二三区| 亚洲一区不卡在线| 成人高清免费观看| jizz国产在线| 欧美日韩xxxxx| 国产欧美日韩影院| 精品人妻一区二区三| 欧美日韩一区二区在线 | 一本色道久久亚洲综合精品蜜桃 | 亚洲一级黄色大片| 欧美精品成人在线| 精品视频久久| 久草视频福利在线| 欧美精品在线一区二区| 日韩av影片| 日本三日本三级少妇三级66| 99国产精品久久久久久久久久 | 精品少妇一区二区三区| 欧洲精品一区二区三区| 男人天堂手机在线视频| 国产精品免费视频观看| 婷婷丁香一区二区三区|