• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Qt框架的視頻播放組件的設(shè)計開發(fā)

      2020-07-04 12:37張琪
      河南科技 2020年13期

      摘 要:隨著國產(chǎn)操作系統(tǒng)的逐漸普及,跨平臺的視頻播放組件急需開發(fā)。本文首先對LibVLC進(jìn)行概述分析,并對Qt編程框架進(jìn)行簡要介紹,然后給出視頻播放組件的設(shè)計開發(fā)方法,最后在Windows平臺和Linux平臺上進(jìn)行仿真驗證。結(jié)果表明:該視頻播放組件滿足實際應(yīng)用需求。

      關(guān)鍵詞:視頻播放;斷點續(xù)播;組播;LibVLC

      中圖分類號:TP317;TN946 文獻(xiàn)標(biāo)識碼:A 文章編號:1003-5168(2020)13-0021-03

      Design and Development of Video Play Component Based on Qt Framework

      ZHANG Qi

      (The 27th Research Institute of China Electronic Technology Corporation,Zhengzhou Henan 450015)

      Abstract: With the popularity of domestic operating system,cross-platform video playback components need to be developed urgently. In this paper, libVLC was analyzed and QT programming framework was introduced. Then the design and development method of video playing component was given. Finally, the simulation was carried out on Windows platform and Linux platform. The results show that the video playing component can meet the practical application requirements.

      Keywords: playback;interrupted stream continuation;multicast;LibVLC

      隨著國產(chǎn)操作系統(tǒng)的逐漸普及,特別是在軍用產(chǎn)品中的普及,跨平臺、通用化的視頻播放組件急需開發(fā)。本文結(jié)合實際工程的需求,以Qt為編程框架,以LibVLC播放器代碼為基礎(chǔ),設(shè)計開發(fā)一種跨平臺、通用化、能播放網(wǎng)絡(luò)組播視頻及本地視頻文件、支持實際項目特定網(wǎng)絡(luò)直播視頻(M4V)斷點續(xù)播的視頻播放組件。

      1 LibVLC及Qt框架介紹

      1.1 LibVLC概述

      VLC多媒體播放器[1]是一個可以用來播放各種各樣的音視頻的多媒體播放器。其支持眾多音頻與視頻解碼器及文件格式,同時也能作為單播或組播的流式服務(wù)器[2-3]在IPv4或IPv6的網(wǎng)絡(luò)連接下使用[4]。基于Qt框架的視頻播放組件將采用VLC視頻播放內(nèi)核組件,并在VLC內(nèi)核LibVLC組件基礎(chǔ)上進(jìn)行修改,以實現(xiàn)斷點續(xù)播功能,并在國產(chǎn)操作系統(tǒng)上進(jìn)行使用。

      LibVLC是VLC的核心部分,它是一個提供接口的庫,比如,給VLC提供些功能接口:流的接入、音頻和視頻輸出、插件管理、線程系統(tǒng)。

      1.2 Qt框架概述

      Qt是一個跨平臺C++圖形用戶界面[5]應(yīng)用程序開發(fā)框架,它是面向?qū)ο蟮目蚣?,使用特殊的代碼生成擴(kuò)展[元對象編譯器(Meta Object Compiler,MOC)]以及一些宏,易于擴(kuò)展,允許組件編程。

      Qt的良好封裝機制使得其模塊化程度非常高,可重用性較好,對用戶開發(fā)來說是非常方便的。Qt提供了一種稱為signals/slots的安全類型來替代callback,使得各個元件之間的協(xié)同工作變得十分簡單[6]。

      2 視頻播放組件設(shè)計

      本文設(shè)計的視頻播放組件以VLC核心LibVLC為基礎(chǔ),同時以Qt為編程框架,主要包括以下兩個部分:核心模塊和界面模塊。核心模塊主要包括媒體部件、媒體播放器部件、媒體列表部件、媒體列表播放器部件、視頻部件、VLC實例部件、視頻元部件;界面模塊主要包括音頻控制控件、視頻控制控件、視頻窗口控件、聲音滑塊控件。播放組件組成具體如圖1所示。

      2.1 核心模塊

      視頻播放組件的核心模塊主要實現(xiàn)將LibVLC相關(guān)核心組件在Qt框架下進(jìn)行封裝。這里以媒體部件模塊設(shè)計為例進(jìn)行描述(見圖2):創(chuàng)建Media類,該類繼承于QObject;創(chuàng)建公共函數(shù)和私有函數(shù),主要包括初始化VLCMedia類函數(shù)initmedia、核函數(shù)core、獲取當(dāng)前位置函數(shù)currentLocation、復(fù)制媒體函數(shù)duplicate、錄制函數(shù)record、設(shè)置參數(shù)函數(shù)setOption。

      2.2 界面模塊

      對于界面模塊的設(shè)計,以視頻窗口控件模塊設(shè)計為例進(jìn)行描述(見圖3):①創(chuàng)建VLCVideoWidget類,該類繼承于QObject;②創(chuàng)建公共函數(shù)和私有函數(shù),主要包括視頻窗口控件初始化函數(shù)initVideoWidget、全屏切換函數(shù)toggleFullscreen、設(shè)置媒體播放器函數(shù)setMediaPlayer等。

      2.3 斷點續(xù)播設(shè)計

      斷點續(xù)播基于實際項目需求,主要為了解決在播放某種特定實時UDP視頻流時,達(dá)到即時加入即時播放的目的。分析原有LibVLC代碼可知,在以UDP方式播放視頻流時,首先要檢測一個視頻頭才能正常播放,在播放器即時加入時,實時視頻流視頻頭此時已發(fā)送到網(wǎng)絡(luò)上,播放器將因為錯過視頻頭而不能達(dá)到視頻播放的目標(biāo)。通過分析LibVLC代碼可知,UDP視頻流輸入時需要首先經(jīng)過核心模塊的視頻部件中的UDP輸入模塊,本設(shè)計在UDP輸入模塊的數(shù)據(jù)塊檢測BlockUDP函數(shù)中增加視頻頭檢測代碼,若未檢測到視頻頭,每經(jīng)過一定數(shù)據(jù)塊則增加一個視頻數(shù)據(jù)塊,以此來解決播放器錯過視頻頭的問題,具體流程如圖4所示。

      3 試驗測試

      研究者在Windows平臺、Linux平臺上測試視頻播放軟件,其中Linux平臺包括國產(chǎn)中標(biāo)麒麟操作系統(tǒng)(64位和32位)和其他Linux操作系統(tǒng)(ubuntu 操作系統(tǒng)32位和64位),測試結(jié)果如圖5至圖9所示。

      4 結(jié)論

      經(jīng)過多平臺多系統(tǒng)測試,該視頻播放組件基本滿足視頻播放需求,且可滿足多種視頻格式播放需求,同時可針對項目中特定視頻格式進(jìn)行斷點續(xù)播。

      參考文獻(xiàn):

      [1]張曉霞.基于VLC的校園信息發(fā)布系統(tǒng)[J].通信技術(shù),2011(7):86-88.

      [2]賈友波.VLC Media Player在教學(xué)中的應(yīng)用探索[J].中國教育現(xiàn)代裝備,2011(19):24-26.

      [3]王鑫.建立IPv6流媒體服務(wù)系統(tǒng)[J].網(wǎng)管員世界,2008(7):54-55.

      [4]孔曉東,曾貴華.智能視頻監(jiān)控技術(shù)研究[D].上海:上海交通大學(xué),2008.

      [5]彭均鍵,史步海,劉洋.基于Qt的嵌入式GUI開發(fā)平臺的搭建[J].微型電腦應(yīng)用,2010(2):40-42.

      [6]曾劍元.ARM9平臺上基于Qt/Embedded的嵌入式GUI的研究與實現(xiàn)[D].長春:吉林大學(xué),2010.

      收稿日期:2020-04-11

      作者簡介:張琪(1988—),男,碩士,工程師,研究方向:光電導(dǎo)航專業(yè)。

      石棉县| 沅陵县| 秭归县| 抚远县| 邢台县| 博客| 南召县| 嘉祥县| 襄汾县| 台山市| 大名县| 将乐县| 犍为县| 侯马市| 桐柏县| 定西市| 彰武县| 淅川县| 四子王旗| 滨州市| 惠水县| 翼城县| 林西县| 河北省| 乌海市| 邮箱| 吉安县| 天祝| 台州市| 莫力| 玉林市| 明水县| 惠州市| 榆社县| 库尔勒市| 和政县| 天全县| 广元市| 东方市| 睢宁县| 新巴尔虎右旗|