第一篇:Mplayer學習總結二
總結 上周找到了截圖的核心函數接口是在libvo/vo_jpeg.c里,這周的任務主要是研究這些截圖函數是如何和前面的主函數連接起來的。
從mplayer.c里面main()函數開始看,截圖最重要還是palyer video(3684行)那部分,而里面的update_video()是核心,通過調試知道不管是截圖和播放視頻都經過它。在update_video()里面包括兩方面的內容:視頻解碼(decode_video())和解碼后的視頻過濾(filter_video())。之前一直研究視頻解碼后返回的mpi(一幅圖片相關的結構體變量)后,到底怎么處理的。通過反復的調試,終于知道了視頻解碼后就把mpi傳給了 filter_video()(在libmpcodecs/dec_video.c定義的)。
在filter_video()里,不斷地屏蔽某些函數接口不斷調試,發現在filter_video()里有個核心函數接口:put_image。后來查了一下,put_image()總共有82處用到,幾乎都在libmpcodecs文件里。在filter_video()里屏蔽了put_image()后,發現mplayr還能播放,只是播放的畫面很快,嘗試了一下截圖,截圖失敗。這說明了,截圖是在put_image()中或者是put_image()后實現的。只是不確定是在里面實現還是在后面實現。也嘗試一下屏蔽filter_video()里面的vf->control()函數,對播放視頻和截圖都沒有影響,說明這個函數在這里的作用可能是控制視頻輸出的。
filter_video()核心部分還是那個vf->put_image(), 繼續跳進去,來到libmpcodecs/vf_vo.c里put_image()(177行)的定義處,之前說過,put_image()總共有82處用到,后來通過播放不同視頻驗證了,最終都會回到libmpcodecs/vf_vo.c里的put_image(),這說明了,播放視頻或截圖時可能調用了很多個put_image(), 但可能是由vf_vo.c那里的put_image()分發出去或者最終回到這里。而在vf_vo.c里
put_image()有一個截圖核心函數 video_out->draw_fame()(192行),后來調試一下,屏蔽了這個函數肯定不能截圖,卻不影響視頻播放,之后也屏蔽了其它的函數截圖,對播放視頻和截圖都沒有影響。這說明,vf_vo.c里put_image()的功能主要是截圖,和播放視頻不太相關。在回到libvo/vo_jpeg.c看了一下,確定了libmpcodecs/vf_vo.c里put_image()的video_out->draw_fame()就是截圖的入口函數。但是,后來調試驗證了一下,只是輸入播放視頻的命令,播放視頻時也會調用這個接口,卻進不去libvo/vo_jpeg.c,所以不能截圖。不能截圖也是正常的,因為截圖的圖片格式有很多種,還有draw_fame()也有很多地方定義了(各種格式圖片的截圖都定義了)。而輸入截圖命令就能進入截圖。這說明,這個雖然是截圖入口,但在截圖前mplayer進行了一些截圖的命令配置,如果沒有這些命令的截圖配置,就算調了這個函數也不會進去libvo里那些截圖核心函數,所以不能截圖。
通過這些的研究,也理清了mplayer的截圖流程了。大體就這樣的:在update_video()里進行解碼和視頻過濾,在視頻過濾中調用put_image(),然后就跳到libmpcodecs/vf_vo.c里put_image()里,在put_image()里再調用截圖入口函數video_out->draw_fame(),但是,這時調用了不一定就能進去,這時如果檢測到截圖命令,才回真正進入libvo/vo_jpeg.c(不一定是jpg, 看你要截哪種格式的圖片)里面實現最終的截圖。
所以最終也得回到命令解析那部分,看看截圖命令如何配置。
回到mplayer.c的main函數里,重點看了一下m_config_preparse_command_line(),這個函數主要處理了運行mplayer時,我們輸入的那一連串命令。在里面跟著函數找,最后會跳到m_config.c里,里面是各種配置處理。只是找到盡頭,還是沒找到函數是怎么調用這些命令函數的。這些是下周要做的任務。
想嘗試一下不通過命令解析,自己直接mplayer.c的main函數寫個接口函數看能不能截圖。就認真看了一下libvo/vo_jpeg.c里面的函數,發現里面有一個LIBVO_EXTERN(),是一個宏定義,這個是連接libvo/vo_jpeg.c里函數的關鍵,是在libvo/video_out_internal.h定義的。嘗試一下,在update_video()里,當某個臨時變量累加某個值時,調用LIBVO_EXTERN(),看能不能截圖,但是make時報錯,LIBVO_EXTERN()不是這樣調用的。
在找截圖函數入口時也驗證了一個問題,屏蔽mplayer.c里的mpctx->video_out->flip_page()(3740行),播放視頻沒有畫面輸出,但截圖功能正常。這說明了,這個函數接口是視頻顯示的核心,是將解碼后的視頻幀刷新到屏幕。
第二篇:Mplayer學習總結一
總結一
首先,在fedora14編譯和安裝mplayer。在官網下了源碼:MPlayer-1.0rc3.tar.bz2,編譯安裝就是./configure,make,make install三部曲。但是,不知道為什么在make時出錯。出現如下的錯誤:“/usr/lib/libgif.so.4: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make: *** [mplayer] 錯誤 1”
以為版本mplayer版本太高,后來就下了MPlayer-1.0rc2.tar.bz2重新編譯。但在make時出現了新錯誤,如下:
vo_ivtv.c:80: warning: unused variable ''sd1''
vo_ivtv.c:79: warning: unused variable ''sd''或者-o vo_ivtv.o vo_ivtv.cvo_ivtv.c: In function 'ivtv_reset':vo_ivtv.c:79: error: storage size of 'sd' isn't knownvo_ivtv.c:80: error: storage size of 'sd1' isn't knownvo_ivtv.c:84: error:
…………
在網上查了資料后,知道之前配置出現了問題,./configure 后面應加上——disable-ivtv 屏蔽ivtv(若不屏蔽,make時將出現-o vo_ivtv.o vo_ivtv.c錯誤),這個問題解決后,又出現了剛開始的問題。又在網上找到資料后知道,產 生這個問題的原因是lib庫引用錯了:QuantizeBuffer是libgif里的東西, 但是卻引用成-lungif。解決辦法:找到Makefile引用的地方, 把-lungif改成-lgif就可以了。位置在:MPlayer-1.0rc2目錄下包含的一個config.mak里(大概是46行)。
這個問題解決后,后面就順利安裝上Mplayer了。
接著就是開始看源碼了,了解mplayer的框架。看代碼當然需要一個好軟件,這樣才能提高閱讀效率。在windows下可以用source insight軟件,而在linux下通過vim+ctags+Tlist可以得到同樣的效果。這里就要熟悉各種命令,在網上也查了一些用法。比較常用的是查找和變量跳轉。這時自己也好好熟悉一下,vim的一些常用的快捷鍵,因為在看代碼時要經常用到。
看代碼時,剛開始真的是無從下手,因為太多了,各種跳轉,沒有側重點。在網上查了些資料,發現這方面的資料也挺少的。后來,看了一下視頻播放原理的資料。mplayer本身就是一個播放器,原理也是大同小異。大體來說播放視頻分4個步驟:1)獲取音視頻 2)音視頻分離 3)音視頻解碼 4)音視頻輸出。在源碼里,/stream目錄對應的功能主要是實現接收和獲取音視頻; /libmpdemux是解復用,作用是分離音視頻;/libmpcodecs作用是解碼;/libvo為視頻輸出;/libao2為音頻的輸出。
開始不太明白為什么要分離音視頻,查資料后知道,其實之所以需要demux,是因為音視頻在制作的時候實際上都是獨立編碼的,得到的是分開的數據,為了傳輸方便必須要用某種方式合起來,這就有了各種封裝格式也就有了demux。因為原始的音視頻都是占用大量空間,而且冗余度較高的數據,通常在制作的時候就會進行某種壓縮。所以,在解碼之前需要先分離。
解碼是比較重要的一部分,解出來是一張張圖片,最終會輸出到顯示器上。這里解碼器只負責解碼,把解碼后的幀傳給一個過渡變量,不負責顯示。
顯示的時候,有些函數接口可以調用顯卡加速功能,不然,直接一張一張圖片刷在屏幕上,會很慢。同時,音頻和視頻在demux之后就是獨立的,但是需要有一套機制把它們同步起來。同時我們需要有一套機制來控制速度、暫停、停止、跳進,獲取各種媒體信息,這些都是很復雜而又很重要的事情。
這周只是查了些網上資料,大概了解了一下mplayer,代碼還沒有怎么細看。接下來就要就某模塊細看代碼,好好理清各個模塊的作用,是怎么樣分離視頻流和音頻流,解碼接口函數如何調用,如截圖功能,就得好好看看libmpcodes/mp_image.c, 看看解碼后的圖片是怎樣儲存的。
第三篇:學習總結二
前一周的學習是理論。這一周的學習主要在車間內現場學習,這一周是對理論知識的加深和鞏固。主要是針對實物,解決理論中沒有完全理解掌握的問題。通過順著車下管道、閥門一步步學習,對照氣路圖一一相呼應,我們有了更深刻的記憶。另外,我們對列車的器件、設備都進行了學習,了解了各部分的位置以及作用。對照實物,我們對于列車的工作方式,氣路、電路、機械原理都有了更直觀的認識。相信這些對我們以后的工作會有很大的幫助。車上方面,對車門、司機室、衛生間等學習了相關部件、原理及操作方法。另外,這一周我對旅客信息系統進行了針對性的學習,以下為我對旅客信息系統學習后的心得。
旅客信息系統的主要功能包括運行信息顯示、廣播通告、娛樂服務以及內部通訊。運行信息顯示分為車內信息顯示和車外信息顯示,車內顯示主要顯示車次號、車廂號、車外溫度、當前速度、當前時間等信息;車外信息顯示主要顯示車次號、車廂號、時間和起點站終點站。廣播通告包括分自動觸發預錄的廣播、手動觸發預錄的廣播和全列人工廣播,內部通訊實現司機室之間、司機室和列車長室、列車長和乘務員、乘務員和乘務員之間通訊,娛樂服務包括一等車和二等車音視頻娛樂、VIP乘客音視頻娛樂和服務呼叫。系統控制器是旅客信息系統的主控單元。系統控制器監視和控制所有連接到該系統的外圍設備,并且通過RS485接口與列車計算機交換數據。
信息顯示可在列車長室中的ISOP上選擇列車號,在系統中會設有該路段的車站等信息,在該段運行時會自動顯示站臺信息,系統控制器可以實時接收GPS數據,并根據選擇的線路和地理位置,自動觸發系統控制器向車廂控制器發送顯示數據,并由車廂控制器轉發給車內外信息顯示屏,車廂控制器控制顯示信息,并接收顯示屏診斷信息,溫度則有車內的溫度傳感器感應,將信息傳給系統控制器,用中文和英文預先定義和存儲的信息可以由列車乘務員在ISOP上選擇,并且在列車內部信息顯示屏上為旅客顯示。
通訊與通告子系統可以方便是工作人員之間的聯系,工作人員及時的將信
息告知旅客。每節車廂的通訊子系統由一個固定的UIC電話和一個能夠驅動揚聲器的車廂控制器(CCT)組成,各個UIC電話通過UIC總線連接在一起,通過UIC電話,可進行全列人工通告以及司機,列車員之間對講通訊。UIC電話左側三個選鍵,自上而下的功能分別為選擇與司機室通話、與全部客室喊話、發出振鈴與最先拿起電話的人通話。上側三個選鍵,自左而右的功能分別為選擇與指定車廂乘務員通話、選擇對指定客室喊話、選擇與指定客室單元通話(VIP單元、一等車單元等等)。系統控制器可以存儲預先定義的通告。里面的信息可以采用兩種方法播放:自動通告系統激活以后,在到達下一站點2公里之前,根據GPS坐標信息觸發自動通告;列車乘務員可以從預先定義/存儲的通告里選擇一條并且通過揚聲器系統輸出。關于優先級的問題,第一是司機與司機,第二司機與列車長室,第三司機與乘務員,第四是列車長室與乘務員,最后是乘務員與乘務員,高級的優先級可打斷低級的優先級。擴展通告功能具有較低的優先級。另外,在1、2、3、16車中有服務呼叫指示器,1車、16車各一個,2、3車共用一個,在乘客安服務呼叫按鈕時,則在相應的指示器的相應位置會變色并發出警報,提醒服務人員,至服務人員安指示器上的“確定”后恢復。
當列車升弓供電后,ISOP屏自動啟動,該屏為觸摸屏,可手動選擇列車車次號,控制器實時接收GPS數據,并根據當前線路和地理位置,自動觸發系統控制器向車廂控制器發送顯示數據,并由車廂控制器轉發給車內外信息顯示屏。ISOP顯示屏會同時顯示當前速度,當前列車坐標以及到下一站距離。ISOP屏上可以選擇音視頻功能,打開VER屏。沙發區的電視和VIP座椅的電視是在VER打開后自動激活,VER關閉后自己關閉。它們的電視是觸屏的電腦,旅客可選擇自己所需的娛樂,沙發區的電視有開關,乘客可自行選擇,VIP座椅的電視是在抽出后30秒自己打開,關閉也是在收起后30秒自動關閉,它們的內容是提前存儲的。二等座車廂的電視只可由列車長室的VER控制,且是集控開關,不可單獨關閉。音頻方面,在VER屏中有三個MP3頻道,一個收音機頻
道,一個電視頻道,車輛中提前輸入了各個區間的娛樂內容可供選擇,電視的聲音和MP3音樂互不影響,在1、2、3、16車的座椅上有耳機插孔,乘客可通過按鍵自行選擇所要的音頻,二等車廂中的音頻由VER控制。
乘務員室同時包括一個HMI屏,此屏同樣為觸摸屏。相比司機室的HMI屏,這個功能就比較少。通過該屏,可以手動選擇控制列車的照明情況,空調溫度、開關,側門的開關,以及對整列車的運行狀況進行監控。照明可以分為關閉、1/3開和全開。空調可以設定單個車廂的溫度,以及單個車廂的運轉與關閉。
通過這周實踐性的學習,我對之前兩周學到的理論知識進行了加深和鞏固,對照實物對列車有了更深的認識。
第四篇:ubuntu個人安裝mplayer心得
ubuntu個人安裝mplayer心得.txt ubuntu個人安裝mplayer心得0
管理提醒: 本帖被 赫敏 執行加亮操作(2008-11-30)也弄這個弄了一天多的時間 終于可以了 也找了很多的資料 但由于是新手 遇到很多問題 還是要自己動手一
個一個的試過去,現在把自己的安裝過程寫下來與大家分享,當然資料參考網上也有一些是自己的體會的 由
于很多因素的影響也不一定適合你。但我希望能幫上點忙
下載(最新版的mplayer支持的格式已經很多了解碼器我安裝我就不說了)
mplayer-20070814.tar.bz2 目前最新版 這個網上有下的
mplayer的skin和字體
http://www.tmdps.cnpilation.去網上Google了下,需要GTK的dev包,繼續get,我就不信了:
#sudo apt-get install libgtk1.2-dev
這會安裝了15個包:
libglib1.2 libglib1.2-dev libgtk1.2 libgtk1.2-common libgtk1.2-dev libx11-dev libxau-dev libxdmcp-dev libxext-dev libxi-dev pkg-config x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-xext-dev
configure過后 就可以輸入以下命令:
#make
#sudo make install
這樣就會在/usr/local/mplayer/bin/下生成gmaplayer圖形界面的 與mplayer命令行的
雙擊gmplayer無法運行 因為沒有裝默認皮膚
下載上面鏈接中的任意一個skin解壓縮到/usr/local/share/mplayer/Skins目錄下,記得一定要把其中一個skin的目錄名改為default 比如你的皮膚為 xxx.tar.bz2 #tar jxvf xxx.tar.bz2 #sudo mv xxx /usr/local/share/mplayer/skins/ #cd /usr/local/share/mplayer/skins/ #sudo mv xxx default 安裝字體:
# tar jxvf gb2312-kai.tar.bz2 #cd /usr/local/share/mplayer/ #sudo mkdir font #cd ~ # cd gb2312-kai/gkai00mp16 # sudo cp * /usr/local/share/mplayer/font/ 這樣就可以運行gmplayer了 而且應用程序的音影中也有mplayer這個選項了 要看什么東東就盡力享受吧呵呵
我安裝的是圖形界面的mplayer 但是沒有與視頻關聯 打開視頻還是用默認的 啥也打不開的播放器打開 修改關聯:
有時會遇到想默認用mplayer打開某種格式的影音文件,可以在該文件上點右鍵,選擇”屬性“->“打開方式”,點選“Mplayer movie player”(前面有黑點就是選上了),然后關閉”屬性“對話框就可以了。還有就是全屏問題了 :
播放時 點全屏后 畫面還是原來那么小 只是框架最大化了 解決方法:
編輯 ~/.mplayer/config 加入一行zoom=yes #sudo gedit ~/.mplayer/config 然后在里面加入一行 zoom=y
演講稿
尊敬的老師們,同學們下午好:
我是來自10級經濟學(2)班的學習委,我叫張盼盼,很榮幸有這次機會和大家一起交流擔任學習委員這一職務的經驗。
轉眼間大學生活已經過了一年多,在這一年多的時間里,我一直擔任著學習委員這一職務。回望這一年多,自己走過的路,留下的或深或淺的足跡,不僅充滿了歡愉,也充滿了淡淡的苦澀。一年多的工作,讓我學到了很多很多,下面將自己的工作經驗和大家一起分享。
學習委員是班上的一個重要職位,在我當初當上它的時候,我就在想一定不要辜負老師及同學們我的信任和支持,一定要把工作做好。要認真負責,態度踏實,要有一定的組織,領導,執行能力,并且做事情要公平,公正,公開,積極落實學校學院的具體工作。作為一名合格的學習委員,要收集學生對老師的意見和老師的教學動態。在很多情況下,老師無法和那么多學生直接打交道,很多老師也無暇顧及那么多的學生,特別是大家剛進入大學,很多人一時還不適應老師的教學模式。學習委員是老師與學生之間溝通的一個橋梁,學習委員要及時地向老師提出同學們的建議和疑問,熟悉老師對學生的基本要求。再次,學習委員在學習上要做好模范帶頭作用,要有優異的成績,當同學們向我提出問題時,基本上給同學一個正確的回復。
總之,在一學年的工作之中,我懂得如何落實各項工作,如何和班委有效地分工合作,如何和同學溝通交流并且提高大家的學習積極性。當然,我的工作還存在著很多不足之處。比日:有的時候得不到同學們的響應,同學們不積極主動支持我的工作;在收集同學們對自己工作意見方面做得不夠,有些事情做錯了,沒有周圍同學的提醒,自己也沒有發覺等等。最嚴重的一次是,我沒有把英語四六級報名的時間,地點通知到位,導致我們班有4名同學錯過報名的時間。這次事使我懂得了做事要腳踏實地,不能馬虎。
在這次的交流會中,我希望大家可以從中吸取一些好的經驗,帶動本班級的學習風氣,同時也相信大家在大學畢業后找到好的工作。謝謝大家!
第五篇:黨支部學習總結(二)
武漢理工大學華夏學院機電工程系黨總支學生五支部
大學生落實科學發展觀的方法總結
學習科學發展觀應當從一開始就把學習擺在首位,并貫穿學習實踐活動始終。讓我們當代的大學生受教育,是開展深入學習實踐科學發展觀活動的一項基本要求。作為學生黨員的我們應該走在學習的最前面,因而支部在9月28日久大學生落實科學發展觀進行了學習討論。
開展深入學習實踐科學發展觀活動,首要任務是學習。學習是把活動引向深入的前提,也是搞好學習實踐活動最重要的基礎。萬丈高樓平地起。要使科學發展觀在我們頭腦中扎下根,真正成為推動經濟社會發展的牢固理念,重要途徑要靠學習。學習的深度決定認識的高度,對科學發展觀的認識水平和理解程度,直接影響著科學發展觀的廣泛普及和深入貫徹。實際工作中,一些人之所以對科學發展觀的認識存在偏差,理解不夠透徹,貫徹落實科學發展觀的自覺性和堅定性不夠強,根本原因是學習不夠。只有從一開始就抓緊學習,才能從整體上把握科學發展觀的理論體系、豐富內涵、精神實質和基本要求,才能真正搞清楚、弄明白為什么要科學發展、怎樣實現科學發展。也只有把學習搞好了,實踐才有基礎,行動才會自覺,科學發展觀才有可能不折不扣地貫徹落實。我們應該充分認識科學發展觀對我們社會主義現代化建設的重要指導意義,并且我們還應該自覺將科學發展觀融入到我們社會實踐當中。我們應當看到胡總書記提出的科學發展觀不僅僅對祖國建設有指導作用,對高官有用,對黨員有用,對每一名大學生,未來國家的建設者來說,也都是非常有用的。我們不應該僅僅把學習科學發展觀看成是政治學習,更該把學習科學發展觀當作人身修養的必修課。那我們應該怎樣上好這節課呢?我想只有大膽地參加社會實踐,以科學發展觀作為指導思想,才可以將這機電工程系黨總支學生五支部整理
武漢理工大學華夏學院機電工程系黨總支學生五支部
節人生重要的課上好。在實踐過程中我們既要營造和諧的環境,更要大膽地創新,因為和諧和創新本身就是科學發展觀的重要組成部分。在這里有個問題,什么是我們大學生的社會實踐呢?我認為從我們進入大學校門開始我們就開始了大學的社會實踐,不過這不夠積極,我們應該在學習之余積極參加學校組織的各類問題活動,參加學校的各個社團,參加班級、學院、學校的干部競選,參與社會的公益活動等等。也許這些都不是很起眼的活動和機構,但是只有通過參與其中,我們才會更好地理解其中的成功和失敗,我們才可以更好地理解科學發展觀對我們的指導作用,我們才會在以后的實踐中不斷成長。不參加社會實踐而空想科學發展觀本身就是脫離實際的表現,學習的意義也沒有了,就更不要說取得成功啦。作為一名黨員,我們通過自覺認真學習了科學發展觀的相關文件,我們真的受益非淺,但是我們知道我們對科學發展觀的理解還是不夠深入的,因而我們支部會在以后的學習工作生活過程中繼續學習和領會其中的深刻道理。我們相信只要堅持科學的發展觀,我們會不斷提高個人素質,不斷取得成功的。我們也堅信,在黨的領導下,以科學發展觀為指導思想,我們的國家在“十二五”計劃實施過程中定會更加繁榮昌盛。
機電工程系黨總支學生五支部
二〇一〇年九月二十八日機電工程系黨總支學生五支部整理