第一篇: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.xiexiebang.compilation.去网上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日久大学生落实科学发展观进行了学习讨论。
开展深入学习实践科学发展观活动,首要任务是学习。学习是把活动引向深入的前提,也是搞好学习实践活动最重要的基础。万丈高楼平地起。要使科学发展观在我们头脑中扎下根,真正成为推动经济社会发展的牢固理念,重要途径要靠学习。学习的深度决定认识的高度,对科学发展观的认识水平和理解程度,直接影响着科学发展观的广泛普及和深入贯彻。实际工作中,一些人之所以对科学发展观的认识存在偏差,理解不够透彻,贯彻落实科学发展观的自觉性和坚定性不够强,根本原因是学习不够。只有从一开始就抓紧学习,才能从整体上把握科学发展观的理论体系、丰富内涵、精神实质和基本要求,才能真正搞清楚、弄明白为什么要科学发展、怎样实现科学发展。也只有把学习搞好了,实践才有基础,行动才会自觉,科学发展观才有可能不折不扣地贯彻落实。我们应该充分认识科学发展观对我们社会主义现代化建设的重要指导意义,并且我们还应该自觉将科学发展观融入到我们社会实践当中。我们应当看到胡总书记提出的科学发展观不仅仅对祖国建设有指导作用,对高官有用,对党员有用,对每一名大学生,未来国家的建设者来说,也都是非常有用的。我们不应该仅仅把学习科学发展观看成是政治学习,更该把学习科学发展观当作人身修养的必修课。那我们应该怎样上好这节课呢?我想只有大胆地参加社会实践,以科学发展观作为指导思想,才可以将这机电工程系党总支学生五支部整理
武汉理工大学华夏学院机电工程系党总支学生五支部
节人生重要的课上好。在实践过程中我们既要营造和谐的环境,更要大胆地创新,因为和谐和创新本身就是科学发展观的重要组成部分。在这里有个问题,什么是我们大学生的社会实践呢?我认为从我们进入大学校门开始我们就开始了大学的社会实践,不过这不够积极,我们应该在学习之余积极参加学校组织的各类问题活动,参加学校的各个社团,参加班级、学院、学校的干部竞选,参与社会的公益活动等等。也许这些都不是很起眼的活动和机构,但是只有通过参与其中,我们才会更好地理解其中的成功和失败,我们才可以更好地理解科学发展观对我们的指导作用,我们才会在以后的实践中不断成长。不参加社会实践而空想科学发展观本身就是脱离实际的表现,学习的意义也没有了,就更不要说取得成功啦。作为一名党员,我们通过自觉认真学习了科学发展观的相关文件,我们真的受益非浅,但是我们知道我们对科学发展观的理解还是不够深入的,因而我们支部会在以后的学习工作生活过程中继续学习和领会其中的深刻道理。我们相信只要坚持科学的发展观,我们会不断提高个人素质,不断取得成功的。我们也坚信,在党的领导下,以科学发展观为指导思想,我们的国家在“十二五”计划实施过程中定会更加繁荣昌盛。
机电工程系党总支学生五支部
二〇一〇年九月二十八日机电工程系党总支学生五支部整理