在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于FFmpeg的遠程視頻監(jiān)控系統(tǒng)編解碼

            基于FFmpeg的遠程視頻監(jiān)控系統(tǒng)編解碼

            作者: 時間:2013-03-05 來源:網(wǎng)絡 收藏

            2.1 建立Linux平臺
            建立Linux系統(tǒng)的基本流程:首先在宿主機上建立交叉編譯環(huán)境,然后移植Linux的引導程序到目標板,最后構(gòu)建Linux系統(tǒng)并移植到目標板。構(gòu)建嵌入式Linux系統(tǒng)主要包括對內(nèi)核進行裁剪和配置,根據(jù)實際的硬件系統(tǒng)進行內(nèi)核和外設驅(qū)動程序的移植開發(fā),以及構(gòu)建Linux的根文件系統(tǒng)。
            2.2 攝像頭驅(qū)動配置
            CMOS攝像頭驅(qū)動以MODULES的形式編寫,因為MODULES形式的驅(qū)動可動態(tài)加載到Linux內(nèi)核。
            加載驅(qū)動程序后,就可以像操作普通文件一樣對攝像頭進行操作。如:定義intm_filev412,通過m_filev412=open(“/dev/camera” O_RDWR)打開攝像頭,通過read(fd,inyuv422,D SIZE)讀取攝像頭的視頻數(shù)據(jù)到數(shù)組inyuv422中,通過closc(m_filev412)關閉攝像頭。有了視頻數(shù)據(jù)后,就可以通進行編碼。
            2. 3 編碼
            2.3.1 簡介
            FFmpeg是一個開源免費跨平臺的視頻和音頻流方案,屬于自由軟件,采用LGPL或GPL許可證(依據(jù)所你選擇的組件),是一個集錄制、轉(zhuǎn)換、音/視頻功能為一體的、完整的開源解決方案。FFmpeg的開發(fā)基于Linux操作系統(tǒng),也可在大多數(shù)操作系統(tǒng)中編譯和使用。FFmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多種編碼,AVI、MPEG、OGG、Matroska、ASF等90多種解碼;TCPMP、VLC、MPlayer等開源播放器都用到了FFmpeg。
            FFmpeg中FF是指Fast Forward。
            2.3.2 編碼
            OV9650攝像頭輸出的數(shù)據(jù)為yuv422格式,而FFmpeg編碼需要輸入yuv420格式數(shù)據(jù),因此在編碼之前需要先將yuv422格式數(shù)據(jù)轉(zhuǎn)化為yuv 420格式。FFmpeg中的函數(shù)sws_scale()可以實現(xiàn)這個過程。
            在使用FFmpeg編碼之前,首先需要對FFmpeg庫進行初始化,注冊所有的器以及文件格式,設置編碼器碼率、幀速率、編碼像素格式等參數(shù),然后尋找編碼器并打開,打開編碼器之后才可以進行編碼。通過設置結(jié)構(gòu)體AVCodecContext中的各個成員參數(shù)來完成參數(shù)的設置過程,例如通過設置AVCodecContext->bit_rate,AVCodecContext->width,AVCodecContcxt->height等可以設置碼率,寬度和高度等,通過設置AVCodecContext->pix_fmt=PIX_FMT_YUV420P設置YUV420像素格式。編碼核心函數(shù)是avcodec_encode_video()。系統(tǒng)每采集一幀數(shù)據(jù),就送給avcodec_encode_video()函數(shù)編碼成H.264視頻流。其編碼流程如圖2所示。

            本文引用地址:http://www.biyoush.com/article/148086.htm

            d.JPG


            下面對編碼流程的各個步驟中主要函數(shù)的作用進行詳細介紹:
            1)av_register_all():注冊庫中含有所有文件格式和器,沒有這一步將無法打開編解碼器。
            2)av_open_imput_file():打開攝像頭視頻文件。
            3)av_find_stream_info():尋找視頻流。
            4)av_find_encoder():尋找編碼器,編碼器參數(shù)需在pCodec中初始化,參數(shù)的初始化很重要,對編碼的圖像質(zhì)量有很大影響。
            pCodec=avcodec_find_encoder (CODEC_ID_H264);//尋找H.264格式編碼器
            5)avcodec_alloc_frame():為編碼幀分配內(nèi)存。
            pFrame=avcodec_alloc_frame();//pFrame為AVFrame格式
            6)avcodec_open():打開編碼器。
            7)av_read_frame():從視頻流中讀取一幀視頻數(shù)據(jù)。
            8)avcodec_encode_video():編碼一幀視頻數(shù)據(jù)。
            9)avcodec_close():關閉編碼器。
            10)avformat_close_mput file():關閉視頻攝像頭文件。

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
            攝像頭相關文章:攝像頭原理


            關鍵詞: FFmpeg 編解碼 嵌入式

            評論


            相關推薦

            技術專區(qū)

            關閉