- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一.Mplayer支持的格式
MPlayer是一个LINUX下的视频播放器,它支持相当多的媒体格式,无论在音频播放还是在视频播放方面,可以说它支持的格式是相当全面的。视频格式支持:MPEG、AVI、ASF 与WMV、QuickTime 与 OGG/OGM、SDP、PVA、GIF。音频格式支持:MP3、WAV、OGG/OGM 文件(Vorbis)、WMA 与 ASF、MP4、CD音频、XMMS。
二. Mplayer 中头文件的功能分析
config.h?//?各种本地配置宏定义头??
version.h?//?版本定义头?#define?VERSION?1.0pre7try2-3.4.2??
mp_msg.h?//?消息处理头??
help_mp.h?//?根据配置自动生成的帮助头?#include?help/help_mpen.h??
cfg-mplayer-def.h?//?Mplayer?运行时的选项缺省值头文件?char*??
default_config?=??
sub_reader.h?//?拥有格式自动发现功能的字幕(subtitle)阅读器??
libvo/video_out.h?//?该文件包含?libvo?视频输出的公共函数、变量??
libvo/font_load.h?//?有关字体装载的例程??
libao2/audio_out.h?//?音频输出驱动程序相关结构定义和全局数据??
libmpcodecs/dec_audio.h?//?音频解码??
libmpcodecs/dec_video.h?//?视频解码??
libmpdemux/matroska.h?//?多路解复用,媒体容器格式?matroska?处理头??
libmpdemux/stream.h?//?流处理??
libmpdemux/demuxer.h?//?多路解复用头文件??
libmpdemux/stheader.h?//?媒体流头处理??
get_path.c?//?路径获取头文件??
spudec.h?//?SPU?子画面单元头,DVD?字幕流??
edl.h?//?剪辑控制清单??
m_option.h?//?选项类型处理头??
m_config.h?//?配置处理头文件??
三. MPlayer.main 主流程简要说明
int?main()?{??
1)?变量声明,电影信息?movie?info:??
2)?初始化,消息系统……??
play_next_file:??
3)播放文件?filename?的循环?goto?play_next_file?开始??
main:??
4)?主处理?main??
5)?播放真正主循环?2010?~3541?while?(!eof)??
while?(!eof)?{??
5.1)?播放音频?PLAY?AUDIO?2017?~?2064?decode_audio(sh_audio,?...);??
5.2)?播放视频?PLAY?VIDEO,?2068?~?2300?decode_video(sh_video,?...);??
5.3)?处理暂停?PAUSE??
5.4)?处理?EDL??
5.5)?键盘事件处理,?搜索2400~3216?while?(!brk_cmd???
(cmd=mp_input_get_cmd(0,0,0))!=NULL)??
5.6)?时间寻道(秒)?if?(seek_to_sec)??
5.7)?寻道?3243?~?3306,?if?(rel_seek_secs?||?abs_seek_pos)??
5.8)?处理?GUI??
5.9)?变更?Update?OSD??
5.10)?找到字幕?find?sub??
5.11)?处理?X11?窗口??
5.12)?DVD?字幕?sub:??
}??
goto_next_file:??
6)?播放结束,转到下个文件?goto_next_file:??
}??
四.Mplayer源码分析
从Mplayer.c的main开始处理参数
mconfig?=?m_config_new();??
m_config_register_options(mconfig,mplayer_opts);??
//?TODO?:?add?something?to?let?modules?register?their?options??
mp_input_register_options(mconfig);??
parse_cfgfiles(mconfig);??
初始化mpctx结构体,mpctx应该是mplayer context的意思,顾名思义是一个统筹全局的变量。
[cpp]? \o view plain view pla
文档评论(0)