• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于FFMPEG的跨平臺(tái)視頻編解碼研究

    2016-09-26 07:37:53陳天喜劉黎明陳凱
    關(guān)鍵詞:解碼攝像頭客戶端

    陳天喜,劉黎明,陳凱

    (株洲中車時(shí)代電氣股份有限公司,湖南株洲,412001)

    基于FFMPEG的跨平臺(tái)視頻編解碼研究

    陳天喜,劉黎明,陳凱

    (株洲中車時(shí)代電氣股份有限公司,湖南株洲,412001)

    視頻監(jiān)控系統(tǒng)在生產(chǎn)、生活及社會(huì)安全中發(fā)揮著越來越重要的作用,各行各業(yè)對(duì)其需求也越來越高。本文介紹了企業(yè)中視頻監(jiān)控系統(tǒng)可用于監(jiān)管全企業(yè)的運(yùn)行狀態(tài),也可應(yīng)用傳感器等實(shí)現(xiàn)生產(chǎn)線狀態(tài)監(jiān)控、反饋和調(diào)整;闡述了視頻解編碼技術(shù)對(duì)視頻文件的編碼解碼,實(shí)現(xiàn)視頻存儲(chǔ)、調(diào)用、分析處理及終端播放等功能;最后針對(duì)FFMPEG多媒體跨平臺(tái)的視頻編解碼技術(shù)進(jìn)行了詳細(xì)的闡述。本文的思想可供同行參考借鑒。

    FFMPEG;視頻編解碼;跨平臺(tái);監(jiān)控系統(tǒng)

    引言

    視頻監(jiān)控系統(tǒng),特別是智能型視頻監(jiān)控系統(tǒng)應(yīng)用越來越廣泛,成為生產(chǎn)智能化、智能家居、社會(huì)安全與辦公場(chǎng)所自動(dòng)監(jiān)控的重要裝備。在實(shí)際應(yīng)用過程中,可以對(duì)監(jiān)測(cè)的對(duì)象實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè),同時(shí)還可以對(duì)監(jiān)測(cè)的數(shù)據(jù)信息進(jìn)行保存,乃至預(yù)警,為調(diào)取相關(guān)的視頻數(shù)據(jù)信息、及時(shí)處理相關(guān)情況提供保障。

    FFMPEG是在LGPL/GPL協(xié)議下發(fā)布的,任何人都可以自由使用,但必須嚴(yán)格遵守LGPL/GPL協(xié)議。如果軟件使用了FFMPEG的代碼,一定要遵守LGPL/ GPL協(xié)議,且公開源代碼。這種開源軟件的發(fā)展趨勢(shì)前景良好。

    1 FFMPEG概述

    FFMPEG是Fast Forward Mpeg的簡(jiǎn)稱,屬于多媒體跨平臺(tái)軟件,其主要功能是將音頻、視頻等數(shù)據(jù)信息進(jìn)行一定的記錄和轉(zhuǎn)化,同時(shí)它還可以將音頻、視頻文件進(jìn)行壓縮編碼和解碼復(fù)原,以實(shí)現(xiàn)音頻和視頻數(shù)據(jù)的傳輸。FFMPEG的支撐與開發(fā)平臺(tái)是Linux,它可支持的編碼高達(dá)40多種,如MPEG、DivX、MPEG4、FLV等,而其可以支持的解碼多達(dá)90多種,如AVI、MPEG、OGG等。這說明該程序的應(yīng)用范圍比較廣泛,且功能上也比較完善,因而在社會(huì)生產(chǎn)生活中發(fā)展十分迅速。

    FFMPEG程序的開發(fā)、模塊庫(kù)、應(yīng)用模式等還需要進(jìn)一步完善。在實(shí)際的使用過程中,相關(guān)技術(shù)、設(shè)備及其先進(jìn)性還有待進(jìn)步。其中,對(duì)于我國(guó)大部分的視頻監(jiān)控設(shè)備來說,其畫面的質(zhì)量還比較低,同時(shí)在進(jìn)行實(shí)時(shí)監(jiān)測(cè)的過程中,比較容易發(fā)生一些技術(shù)問題,這就在一定程度上影響了視頻監(jiān)控的進(jìn)行,因此應(yīng)當(dāng)切實(shí)加大對(duì)其中存在問題的研究力度,以切實(shí)提高我國(guó)視頻監(jiān)控的水平[1]。

    2 系統(tǒng)應(yīng)用

    為了保障客戶端與服務(wù)器之間的信息傳輸,系統(tǒng)使用了C/S的設(shè)計(jì)模式。具體工作流程如下:

    (1)當(dāng)客戶端收到服務(wù)器發(fā)出的監(jiān)聽指令之后,會(huì)對(duì)該指令進(jìn)行一定的驗(yàn)證,只有驗(yàn)證通過,客戶端才會(huì)與服務(wù)器進(jìn)行連接;

    (2)連接成功后,客戶端會(huì)自動(dòng)開啟攝像頭,并同時(shí)將監(jiān)測(cè)得到的視頻數(shù)據(jù)信息進(jìn)行記錄、保存。這時(shí)所記錄的視頻數(shù)據(jù)信息是Rgb565格式的,因此為了實(shí)現(xiàn)數(shù)據(jù)信息的傳輸,會(huì)將數(shù)據(jù)信息的格式進(jìn)行一定的轉(zhuǎn)換;

    (3)視頻數(shù)據(jù)信息格式轉(zhuǎn)化完成后,會(huì)使用FFMPEG程序?qū)?shù)據(jù)信息進(jìn)行壓縮,之后其格式會(huì)轉(zhuǎn)換為H.263格式類型的視頻;

    (4)壓縮所得到的視頻文件會(huì)利用通信網(wǎng)絡(luò)的傳輸功能,將文件信息傳送至服務(wù)器終端的電子計(jì)算機(jī)中;

    (5)當(dāng)終端接收到視頻文件后,再次利用FFMPEG程序的解碼功能,將視頻文件進(jìn)行解碼處理[2]。最終通過VFW將所監(jiān)測(cè)到的視頻資料呈現(xiàn)在顯示器中。

    通過整個(gè)運(yùn)行過程進(jìn)行研究分析發(fā)現(xiàn):該系統(tǒng)利用到了FFMPEG的壓縮編碼和解碼的功能,且與FFPMEG配套的軟件操作比較簡(jiǎn)單,視頻監(jiān)控系統(tǒng)實(shí)際應(yīng)用方便。

    3 客戶端應(yīng)用

    對(duì)于系統(tǒng)客戶端而言,其主要的功能首先是建立平臺(tái),搭建嵌入式Linux平臺(tái);其次就是建立一個(gè)交叉的編譯環(huán)境。只有保證這些基本的準(zhǔn)備工作完成,才可以啟動(dòng)攝像頭開啟的程序;最后就是將攝像頭收集到的視頻信息通過FFMPEG程序進(jìn)行壓縮編碼,當(dāng)收到監(jiān)聽服務(wù)器的監(jiān)聽指令后,將數(shù)據(jù)信息傳輸給服務(wù)器端。

    3.1嵌入式Linux平臺(tái)

    客戶端在搭建嵌入式Linux平臺(tái)時(shí),主要的步驟流程如下:首先,利用H-JTAG程序在短時(shí)間內(nèi)編譯BIOS到相應(yīng)的開發(fā)板中;其次,將Nand Flash進(jìn)行格式化處理;再次,將Bootloader完成安裝;最后再,將內(nèi)核的文件進(jìn)行安裝,完成以上步驟之后再將文件系統(tǒng)進(jìn)行安裝。

    3.2交叉編譯環(huán)境的搭建

    當(dāng)嵌入式Linux平臺(tái)搭建完成后,就開始進(jìn)行交叉編譯環(huán)境的搭建。一般情況下,在該平臺(tái)下要對(duì)內(nèi)核、Bootloader以及一些其它程序進(jìn)行編譯,且這一過程中離不開交叉編譯工具的支持。

    3.3攝像頭的配置介紹

    由OmniVision公司所研制的CMOS系列OV9650型號(hào)的攝像頭,在實(shí)際的應(yīng)用過程中能夠與S3C2440相匹配。該型號(hào)的攝像頭的像素達(dá)到了130萬(wàn),且其輸出的視頻圖像的格式比較多樣化,例如主要包括了SXGA、VGA、QVGA等,同時(shí)由于其具有加窗的功能,這樣就可以根據(jù)需要選擇不同大小的圖像。由于該攝像頭可以輸出多種格式類型的圖像,因此不同格式圖像之間的最高輸出幀率是具有一定差異的,其中最高達(dá)到120 fps.

    在Linux平臺(tái)中,OV9650型號(hào)的圖像傳感器是充當(dāng)字符設(shè)備進(jìn)行描述的,在啟動(dòng)攝像頭的過程中,傳感器相應(yīng)的驅(qū)動(dòng)程序會(huì)為一個(gè)流動(dòng)控制接口提供相應(yīng)的應(yīng)用程序,這時(shí)用戶就可以利用相應(yīng)的設(shè)備文件實(shí)現(xiàn)與硬件之間的數(shù)據(jù)信息傳輸,因此從本質(zhì)上來講,在對(duì)有關(guān)的設(shè)備文件進(jìn)行使用的過程時(shí)就是對(duì)相關(guān)系統(tǒng)進(jìn)行了調(diào)用[3]。用戶一旦想要將系統(tǒng)的調(diào)用和有關(guān)的設(shè)備驅(qū)動(dòng)程序結(jié)合起來,那么就必須用到Struct file_operations這一個(gè)關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)。因此從專業(yè)角度來說,設(shè)備驅(qū)動(dòng)的編寫主要就是將數(shù)據(jù)結(jié)構(gòu)中的子函數(shù)進(jìn)行一定的編譯,并將其填充至file-operation的各個(gè)域中。為了在開發(fā)階段盡量避免多次燒寫內(nèi)核,可以利用Insmod的命令來進(jìn)行驅(qū)動(dòng)程序的加載,當(dāng)驅(qū)動(dòng)模塊完成相應(yīng)的加載之后,便可以對(duì)攝像頭的數(shù)據(jù)信息進(jìn)行收集、處理等程序,例如設(shè)計(jì)相應(yīng)的編譯碼來啟動(dòng)攝像頭等。最后將所收集到的視頻信息數(shù)據(jù)利用FFMPEG程序進(jìn)行壓縮編碼。

    3.4FFMPEG編碼的介紹

    在對(duì)視頻數(shù)據(jù)信息進(jìn)行FFMPEG編碼的過程中,首先應(yīng)當(dāng)將該程序進(jìn)行初始化的處理,并將所使用到的所有編解碼器完成注冊(cè),同時(shí)還應(yīng)當(dāng)將碼率、幀速率、圖像的格式以及其分辨率等進(jìn)行提前的設(shè)定,只有完成這些準(zhǔn)備工作,才能開始編碼。從另一層面來說,這些準(zhǔn)備工作的有效完成也是編碼順利完成的保障。在編碼過程中可以通過設(shè)置videocodec的值來進(jìn)行編碼器的設(shè)置工作,例如anfmt->video-codec=CODEC-ID-H263來完成H.263編碼器的設(shè)置。其具體的客戶端編碼步驟如圖1所示。

    圖1 客戶端編碼步驟圖

    通過以上的步驟可以完成H.263的視頻流,而攝像頭所收集到的數(shù)據(jù)信息的格式是rgb565,因此必須先實(shí)現(xiàn)其向rgb888的格式轉(zhuǎn)換,之后再向yuv420的格式轉(zhuǎn)換,最后再經(jīng)由FFMPEG程序進(jìn)行壓縮編碼,最終成為了H.263的視頻格式。

    4 服務(wù)端分析

    前面已將客戶端的主要工作及工作的編碼程序進(jìn)行了詳細(xì)地說明,而對(duì)于服務(wù)端而言,其主要的任務(wù)就是對(duì)涉及到的所有客戶端進(jìn)行實(shí)時(shí)的監(jiān)控,同時(shí)還可以根據(jù)實(shí)際的需要對(duì)任何一個(gè)客戶端進(jìn)行監(jiān)控。服務(wù)器端在接收客戶端傳輸?shù)臄?shù)據(jù)信息后,會(huì)利用FFMPEG程序?qū)?shù)據(jù)信息進(jìn)行解碼,并最終將其顯示于顯示器中。

    在利用FFMPEG程序?qū)σ曨l信息數(shù)據(jù)進(jìn)行解碼的過程中,首先應(yīng)當(dāng)將FFMPEG進(jìn)行初始化處理,并將使用到的編碼器完成相關(guān)的注冊(cè)。其次還應(yīng)當(dāng)對(duì)解碼器進(jìn)行配置,并對(duì)解碼的圖像的像素格式進(jìn)行一定的設(shè)置,完成這些準(zhǔn)備工作之后,才能夠?qū)σ曨l數(shù)據(jù)信息進(jìn)行解碼。服務(wù)器端對(duì)視頻數(shù)據(jù)信息進(jìn)行解碼的步驟如圖2所示。

    圖2 服務(wù)器端解碼步驟

    4.1服務(wù)器端解碼

    前面已經(jīng)知道客戶端傳輸?shù)囊曨l流的格式是H.263,對(duì)其進(jìn)行解碼與普通的文件解碼是存在一定的差異的,這主要是因?yàn)閷⑦M(jìn)行解碼數(shù)據(jù)的長(zhǎng)短是不確定的,而為了解決這一難題,可以設(shè)置一個(gè)線程來主要完成解碼工作,另外也可以設(shè)置一個(gè)FIFO隊(duì)列來進(jìn)一步完善解碼的流程[4]。這樣當(dāng)對(duì)視頻流進(jìn)行解碼時(shí),服務(wù)器端接收的數(shù)據(jù)信息會(huì)不間斷地進(jìn)入到FIFO的隊(duì)列中,之后只要從最開頭的位置調(diào)取固定的數(shù)據(jù)字節(jié)進(jìn)行解碼既可。但是經(jīng)由FFMPEG程序完成的解碼其格式是YUV,因此為了保障在顯示器顯示正常應(yīng)當(dāng)將這種格式轉(zhuǎn)換成RGB格式。

    4.2服務(wù)器端顯示

    一般來說,顯示的視頻使用的都是VFW,且其應(yīng)用的核心函數(shù)是Draw DibDraw。對(duì)于這種函數(shù)來說,一般具有13個(gè)主要的參數(shù),其中主要的參數(shù)就是第7個(gè)、第8個(gè)。第7個(gè)參數(shù),是將位圖的頭信息進(jìn)行編譯,而第8個(gè)參數(shù),是將RGB的圖像數(shù)據(jù)進(jìn)行編譯的。另外應(yīng)當(dāng)注意的是在使用DrawDibDraw時(shí),應(yīng)當(dāng)對(duì)圖像數(shù)據(jù)進(jìn)行反向的操作,在這一過程中尤為注意的是應(yīng)當(dāng)對(duì)圖像的寬度值進(jìn)行明確,之后再進(jìn)行相關(guān)的操作。

    5 質(zhì)量效果控制分析

    對(duì)于本次實(shí)驗(yàn)來說,其運(yùn)行的環(huán)境是3G的通信環(huán)境,其數(shù)據(jù)流格式為H.263,因此應(yīng)當(dāng)將所使用通道的數(shù)據(jù)流進(jìn)行一定的設(shè)置,并將其分辨率也進(jìn)行一定的設(shè)置,本次實(shí)驗(yàn)中的分辨率設(shè)置為QCIF(176*144),而對(duì)于其他參數(shù)的設(shè)置,應(yīng)當(dāng)根據(jù)實(shí)際的情況來完成,例如在對(duì)碼率進(jìn)行設(shè)置的過程中,應(yīng)當(dāng)事先對(duì)拍攝的實(shí)際視頻情況進(jìn)行分析,繼而再對(duì)相關(guān)的數(shù)據(jù)進(jìn)行設(shè)定。對(duì)于3G的通信環(huán)境來說,其帶寬一般為48 kB/s,因此在對(duì)碼率進(jìn)行設(shè)定的過程中,其值不允許超過該數(shù)值[5]。如果用戶想要得到較為流暢的視頻畫面,可以適當(dāng)?shù)貙蔬M(jìn)行一定的增加;如果用戶想要的是將視頻監(jiān)控中移動(dòng)的物體進(jìn)行突出顯示,可以將適當(dāng)?shù)貙㈥P(guān)鍵幀的比例進(jìn)行一定的增加,但是需要注意的是在調(diào)整的過程中切忌超過系統(tǒng)的帶寬。

    6 結(jié)論

    綜合全文所述,視頻監(jiān)控系統(tǒng)對(duì)于今天的社會(huì)生產(chǎn)和生活具有十分重要的作用,因此應(yīng)當(dāng)加大對(duì)該項(xiàng)技術(shù)的研究力度,切實(shí)提高視頻畫面的質(zhì)量,以滿足當(dāng)下社會(huì)發(fā)展對(duì)其的迫切需求。然而,據(jù)目前情況來看,視頻監(jiān)控系統(tǒng)在實(shí)際的應(yīng)用過程中仍舊存在一定的問題,例如畫面不流暢、畫面不清晰等。為了切實(shí)解決這些問題,應(yīng)當(dāng)加大對(duì)FFMPEG技術(shù)的研究,以推動(dòng)我國(guó)視頻監(jiān)控技術(shù)的研發(fā)與進(jìn)步。

    [1]辛長(zhǎng)春.基于FFMPEG的遠(yuǎn)程視頻監(jiān)控系統(tǒng)編解碼[J].電子技術(shù),2013(01): 3-5.

    [2]施惠娟.基于FFMPEG的視頻水印系統(tǒng)[J].電子設(shè)計(jì)工程,2013,21(23): 185-187.

    [3]何圓圓.基于FFMPEG的H.263視頻解碼器的研究與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2012(35): 8519-8521.

    [4]張正華.基于H.264的嵌入式視頻解碼研究[J].無(wú)線電工程,2013,43(1): 46-49.

    [5]劉嘉.基于PPMPEG的AVS視頻播放器設(shè)計(jì)與實(shí)現(xiàn)[J].鄭州輕工業(yè)學(xué)院學(xué)報(bào),2015(3): 75-78.

    Research Cross-platform Video Code Based on the FFMPEG

    Tianxi Chen, Liming Liu, Kai Chen(Zhuzhou Zhongche Times Electric Limited Co., Ltd., Zhuzhou, Hunan, 412001, China)

    Video monitoring system has played an increasingly important role in social security, production,life and so on, which is under higher and higher demand. This paper introduces the video monitoring system which can be regulated in the whole enterprise operation state, also be used sensors to achieve production line condition monitoring, feedback and adjustment. Expounds the video coding technology solutions for video file coding decoding, realize the video storage, load, analysis, processing and terminal play functions. Finally, based on FFMPEG cross-platform multimedia video codec technologies are described in detail. This paper has reference value for peers.

    FFMPEG; Video Codec; Cross Platform; Video Monitoring System

    TP277

    A

    2095-8412 (2016) 04-805-04

    工業(yè)技術(shù)創(chuàng)新 URL: http://www.china-iti.com 10.14103/j.issn.2095-8412.2016.04.061

    陳天喜(1981-),工程師,軌道交通信息系統(tǒng)。E-mail: chentx@teg.cn

    劉黎明(1979-),工程師,軌道交通信息系統(tǒng)。E-mail: liulm@teg.cn

    陳凱(1984-),工程師,軌道交通信息系統(tǒng)。E-mail: chenkai@teg.cn

    猜你喜歡
    解碼攝像頭客戶端
    浙江首試公路非現(xiàn)場(chǎng)執(zhí)法新型攝像頭
    《解碼萬(wàn)噸站》
    攝像頭連接器可提供360°視角圖像
    解碼eUCP2.0
    NAD C368解碼/放大器一體機(jī)
    Quad(國(guó)都)Vena解碼/放大器一體機(jī)
    縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
    孵化垂直頻道:新聞客戶端新策略
    基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
    奔馳360°攝像頭系統(tǒng)介紹
    汉源县| 蒲城县| 泰安市| 清远市| 山丹县| 白朗县| 尉犁县| 鲜城| 阿克| 康保县| 永定县| 兴化市| 嘉善县| 南昌市| 怀宁县| 阜宁县| 贵溪市| 武义县| 太白县| 普格县| 济阳县| 东海县| 河东区| 南充市| 山东省| 同心县| 盘锦市| 蒙自县| 蒙阴县| 卓资县| 沾益县| 永新县| 密云县| 徐闻县| 大洼县| 临朐县| 乌恰县| 孟津县| 大化| 淮阳县| 金昌市|