freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于物聯(lián)網(wǎng)的智能家居系統(tǒng)設(shè)計(jì)報告書-文庫吧資料

2025-07-03 20:40本頁面
  

【正文】 onnect(thisudpsocket,SIGNAL(readyRead()),SLOT(received()))。 thisudpsocket = new QUdpSocket( this )。所以將采集的視頻數(shù)據(jù)進(jìn)行一定的放大之后,效果在可以接受的范圍內(nèi),因此,這是個折中的辦法。但這樣的缺點(diǎn)是視頻數(shù)據(jù)量非常大。由于攝像頭型號比較陳舊,并且QUdpSocket傳輸一次最大數(shù)據(jù)量約為60000字節(jié)左右,因此數(shù)據(jù)采集時圖像格式選用176*,因此一幀圖像的大小為176*144*2. 為什么不采用圖像的壓縮?由于UPstart2410的性能有限,而且視頻的壓縮比較占用CPU資源,并且在采集數(shù)據(jù)的同時還要將數(shù)據(jù)發(fā)送到上位機(jī)上,為了保證實(shí)時傳輸視頻,不造成延遲,因此沒有采用視頻的壓縮技術(shù)。由于程序需要進(jìn)行數(shù)據(jù)處理,和圖像的轉(zhuǎn)換等,CPU所耗資源比較大,因此實(shí)際顯示的時間間隔要大于20毫秒,但是,介于網(wǎng)絡(luò)傳輸?shù)乃俣鹊?,每秒圖像的傳輸速度應(yīng)該1020幀之間,因此,不會造成圖像的接收完畢未被顯示有丟棄的情況。設(shè)置一個定時器,為了是視頻播放流暢。當(dāng)接收到數(shù)據(jù)后,判斷數(shù)據(jù)的大小是否夠一幀圖像。thisudpsocketwriteDatagram(QByteArray((const char *)buffer,176*144*2), 176*144*2,QHostAddress(),8000)。while(1){ v4l_grab_sync(vd,0)。 v4l_grab_start(vd,0)。 v4l_grab_init(vd,CIF_WIDTH,CIF_HEIGHT)。VD。v4ldevice *vd。在循環(huán)中,先進(jìn)行采集,然后進(jìn)行發(fā)送。然后依次對其初始化、初始化內(nèi)存映射。所以首先通過V4L打開攝像頭設(shè)備。v4l_grab_start(vd,0)。 v4l_grab_init(vd,CIF_WIDTH,CIF_HEIGHT)。v4ldevice *vd。return 1。//也可以在此設(shè)置其他的分量值if(ioctl(vdfd, VIDIOCSPICT, amp。return 0。}if (v4l_get_capability(vd))return 1。if ((vd fd = open(dev, O_RDWR)) 0) {perror(v4l_open:)。二、Video4linux支持的數(shù)據(jù)結(jié)構(gòu)及其用途(1)video_capability 包含設(shè)備的基本信息(設(shè)備名稱、支持的最大最小分辨率、信號源信息等)name[32] //設(shè)備名稱maxwidthmaxheightminwidthminheightChannels //源個數(shù)type //是否能capture ,彩色還是黑白, 是否能裁剪等等。(4)進(jìn)行視頻采集,兩種方法:①內(nèi)存映射(5)對采集的視頻進(jìn)行處理,這個是為了對視頻的下一步操作,例如壓縮等操作。(2)讀取設(shè)備信息,對設(shè)備的讀取操作與普通文件相像,用驅(qū)動程序提供的read函數(shù)。視頻編程的流程:(1)打開視頻設(shè)備,在Linux中萬物皆文件。再次單擊右鍵也可以隱藏這些工具。 在全屏幕狀態(tài)下,單擊鼠標(biāo)右鍵可以顯示控制欄。在主程序中接收雙擊信號,如果不是全屏幕,就將畫面設(shè)置為全屏640*480。并且定義一個bool變量來監(jiān)控是否進(jìn)入全屏幕狀態(tài)。 除了可以以當(dāng)前大小觀看視頻,還可以全屏幕觀看,對播放窗口雙擊鼠標(biāo),或者點(diǎn)擊全屏幕按鈕,就可以將視頻畫面設(shè)為全屏幕。再次解碼時則從定位后的流開始再次解碼。 視頻的進(jìn)度條和快進(jìn)快退的定位由FFMPEG提供的APIav_seek_frame(AVFormatContext *s, int stream_index,int64_t timestamp,int flags)。當(dāng)快退至小于10秒時或者快進(jìn)至大于總時長10秒時,則自動進(jìn)入播放狀態(tài)。視頻快進(jìn)、快退狀態(tài)為視頻的加速解碼,設(shè)置一個定時器,當(dāng)選中快進(jìn)或者這快退后,定時器快開始工作,在解碼完當(dāng)前幀后,跳過幾幀后,再解碼一次,并刷新圖像,刷新時間。 播放器內(nèi)部共有6種狀態(tài)。以此往復(fù)。順序播放,從播放列表當(dāng)前播放的文件開始,順序向下播放,當(dāng)最后一首歌曲播放完畢后,播放器停止。順序播放,單曲循環(huán)和全部循環(huán)。并且,拖動進(jìn)度條可以將視頻文件定位到相應(yīng)的時間繼續(xù)播放。播放劉表下面實(shí)時顯示播放時間于總時常。此處,以QT的MVC架構(gòu)實(shí)現(xiàn)。中間欄右側(cè),為播放列表,列出在指定目錄下所有的音視頻文件。} 播放器的邏輯結(jié)構(gòu)圖31 播放器主界面截圖在播放器上方為主菜單選擇按鈕。 emit thisvaluechange(thisnowtime)。 thisnowtimetmp+=thisframetime。datasize,)。//解碼視頻 } if(==audioStream) {datasize=FFMAX(*sizeof(*buff),AVCODEC_MAX_AUDIO_FRAME_SIZE)。 avcodec_decode_video(pCodecCtx,pFrame,amp。 return。 thisnowtime=((int)thisnowtimetmp+)。 if(av_read_frame(oc,amp。}。 protected: void run()。 public slots: void time_out()。 void imagechanged(struct SwsContext *)。 signals: void threadstop()。 void halt()。 void play(int timestamp)。 void init(char *inputfilename)。 int nowtime。 float timeframe。 float maxtime。 QString maxtimestr。 uint8_t *buffer。 //聲音解碼的工作空間 char *filename。 int datasize。 int fd。 int audioStream。 AVFrame *pFrame。 AVCodec *pCodec。 AVCodecContext *pCodecCtx。 AVPacket packet。 QPlay(char *)。使用多線程技術(shù)來實(shí)現(xiàn)解碼工作。 make install FFMPEG解碼流程l 注冊全部文件格式和編解碼器l 打開輸入文件l 查找輸入流l 確定輸入的音頻流和視頻流l 打開音頻、視頻解碼器l 初始化聲卡設(shè)備,并打開聲卡設(shè)備l 初始化解碼所需空間開辟新的內(nèi)存區(qū)域l 初始化圖像縮放結(jié)構(gòu)l 等待解碼指令l 解碼成功執(zhí)行下一條,不成功退出l 判斷包的數(shù)據(jù)類型,音頻或者視頻l 如果是音頻,則解碼并將數(shù)據(jù)寫入到聲音設(shè)備中l(wèi) 如果是視頻則將其保存在固定的內(nèi)存地址中l(wèi) 循環(huán)解碼直至完畢,或者接受到終止指令 基于Qt的嵌入式播放器的實(shí)現(xiàn) 在這部分中,需要寫兩個類,一個是QPlay,用于實(shí)現(xiàn)播放器的初始化和播放器的解碼工作。libfaad libfaac、解碼aac音頻格式libx264 libxvid開放源代碼的MPEG4視頻編解碼器FFMPEG交叉編譯環(huán)境的配置如下./configure \crossprefix=/usr/local/\disablestatic disableyasm disablearmv6 disablearmv6t2 disablearmvfp disableasm disableoptimizations disableffmpeg disableffplay disableffserver disabledoc \disableffprobe disablenetwork targetos=linux arch=arm enablelibfaac \enablelibfaad enablelibfaadbin enablelibxvid enablelibx264 enablelibmake amp。所以應(yīng)該選合適的版本。因此,很難做到一次寫代碼不用修改的就在各個版本之間實(shí)現(xiàn)。 FFMPEG及其編解碼庫的移植 FFMPEG本身支持多種音視頻格式的編解碼,但是有一些是需要在FFMPEG編譯之前編譯好,并且在配置的時候指明其庫的路徑。其中l(wèi)ibavcodec用于存放各個encode/decode模塊,libavformat用于存放 muxer/demuxer模塊,libavutil用于存放內(nèi)存操作等常用模塊。FFmpeg的開發(fā)是基于Linux操作系統(tǒng),但是可以在大多數(shù)操作系統(tǒng)中編譯和使用。根據(jù)我們的目的,每個包包含了完整的幀或者對于音頻來說是許多格式的完整幀。接著從流中被讀出來的叫做包Packets。編解碼器 描 述了實(shí)際的數(shù)據(jù)是如何被編碼Coded和解碼DECoded的,因此它的名字叫做CODEC。在流中的數(shù)據(jù)元素被稱為幀F(xiàn)rame。接著,你有一組流,例如,你經(jīng)常有的是一個音頻流和一個視頻流。首先,文件本身被稱為容器Container,容器的類型決定了信息被存放在文件中的位置。它包含了非常先進(jìn)的音頻/視頻編解碼庫libavcodec,為了保證高可移植性和編解碼質(zhì)量,libavcodec里很多codec都是從頭開發(fā)的。第三章 智能家居多功能娛樂系統(tǒng) 基于QT和FFMPEG的嵌入式播放器 FFMPEG簡介FFmpeg是一個開源免費(fèi)跨平臺的視頻和音頻流方案,屬于自由軟件,采用LGPL或GPL許可證(依據(jù)你選擇的組件)。而是使用usb鼠標(biāo)進(jìn)行控制??梢垣@得其他編碼標(biāo)準(zhǔn)向UNICODE的轉(zhuǎn)換支持,從而在Qfont類中得以轉(zhuǎn)換與顯示。 Qt/Embedded內(nèi)部對于字符集的處理采用了UNICODE編碼標(biāo)準(zhǔn)。Qt/Embedded中對于鍵盤響應(yīng)的實(shí)際函數(shù)位于src/kernel/中,定義了鍵盤類設(shè)備接口的基類QWSKeyboardHandler。其中鼠標(biāo)設(shè)備在源碼目錄中的src/kernel/,從該類中又重新派生出一些特殊鼠標(biāo)類設(shè)備的實(shí)現(xiàn)類。在FrameBuffer驅(qū)動程序調(diào)試通過后,配置Qt/Embedded的編譯選項(xiàng),可以保證Qt/Embedded的圖形引擎正常工作。對于設(shè)備更加底層的抽象描述,則在src/。Qt/Embedded能夠較好地根據(jù)系統(tǒng)已有的FrameBuffer驅(qū)動接口構(gòu)建上層的圖形引擎。 QT Embedded移植Qt/Embedded的底層圖形引擎完全依賴于FrameBuffer,因此在移植時需考慮目標(biāo)平臺的Linux內(nèi)核版本和FrameBuffer驅(qū)動程序的實(shí)現(xiàn)情況,包括分辨率和顏色深度等在內(nèi)的信息。有了操作系統(tǒng)對于V4L,UDP,無線網(wǎng)卡等驅(qū)動就簡單了很多。ARCH :=改為ARCH := arm CROSS_COMPILE
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1