QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21891|回复: 27

再次修改mplayer源码,有兴趣的看看

[复制链接]
发表于 2003-1-3 20:16:54 | 显示全部楼层 |阅读模式
版本:0.90 rc4

1.去掉播放rm时弹出的not a/v streams错误框
打开mplayersource/libmpdemux/demux_real.c,找到下面的代码(1082行):
[code:1]
else {
                    mp_msg(MSGT_DEMUX, MSGL_ERR, "Not audio/video stream or unsupported!\n");
                }[/code:1]
全部删掉或注释掉
在播放rm文件时,这部分(else if... else)代码被执行3次,第一和第三次上面的代码条件不足不执行,跳过,第二此执行了,因此弹出警告窗.
由于不清楚rm文件的格式和作者的判断是否正确,这是否是软件的bug不清楚,只知道老是弹出这框非常烦人,建议去掉,对mplayer功能无影响,rm照样播放

2.去掉播放过慢时老是弹出的"太慢播放这个"警告框
打开mplayersource/mplayer.c,找到下面的代码(1933行):
[code:1]
        if(drop_frame_cnt>50+drop_message*250 && AV_delay>0.5){
          ++drop_message;
          mp_msg(MSGT_AVSYNC,MSGL_ERR,MSGTR_SystemTooSlow);
        }
[/code:1]
这里判断如果丢帧,丢失信息太利害或图像和声音延时太明显,则用mp_msg函数弹出系统太慢的警告信息框,有时播放速度还可以接受,但老是弹出这个框感觉不爽,将这些代码删掉或注释掉就可以消除这个现象.

3.消除看带vobsub字幕的divx电影后,自动禁止加载字幕功能的现象
这个bug的现象是,如果你设置了自动加载字幕功能,在加载带divx时,会自动加载和电影文件同名的sub字幕,因此播放时能看到字幕,但加载完后,mplayer会自动将自动加载功能设置为禁止,因此,下次你再播放divx电影时,将不会再加载字幕,得重新设置自动加载字幕功能才能生效(如果是gui操作界面,在右键-"属性设置"-"OSD和字幕",将"禁止自动加载字幕"的勾去掉就能让自动加载字幕声效),比较麻烦,一些朋友老是说mplayer第一次能播放sub字幕,第二次就不能播放,就是这个原因,这里有相关描述播放srt字幕这个bug不会发作)
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=8592&highlight=%BC%D3%D4%D8%D7%D6%C4%BB
打开mplayersource/mplayer.c,找到下面代码(1040行):
[code:1]
if(vo_vobsub){
      sub_auto=0; // don't do autosub for textsubs if vobsub found
      inited_flags|=INITED_VOBSUB;
      vobsub_set_from_lang(vo_vobsub, dvdsub_lang);
    }
[/code:1]
这里的代码意思是,如果加载sub字幕成功,则令sub_auto=0,并初始化字幕信息,设置sub字幕的语系;正是这句sub_auto=0累事(divx电影播放时会检测这个值,如果为1,则搜索字幕加载,为0不加载字幕,而且,这个值在程序退出时保存到~/.mplayer/gui.conf里的sub_auto_load = ""行,如果为0,则保存为sub_auto_load = "NO",如果为1,则保存为sub_auto_load = "yes"),按作者的注释,这样做似乎是防止加载了sub字幕后再加载srt字幕,而一般情况下,divx电影目录下只有一种字幕,要么是sub格式,要么是srt格式,因此这行sub_auto=0;一般没必要存在,因此,只要将这行注释掉或删掉,那就再也没有播放sub字幕老要自己设置加载的烦恼了

这三处其实也不算是bug,因此,只在这里贴出一下,本站提供的源码包就不打算修改了,有兴趣的朋友,请自己下载本站源码按上面的步骤做做修改(当练手,很有意义的),然后重新完全编译安装一次吧
发表于 2003-1-3 22:10:27 | 显示全部楼层
版主,有个问题想请教,据我观察mplayer实现解码、输出等操作的时候只用了一个线程是不是,不知道版主对于这种实现方法是否有了解,能不能给小弟讲讲。
回复

使用道具 举报

 楼主| 发表于 2003-1-3 22:53:03 | 显示全部楼层
这个不清楚,我只是挑部分代码看,而且我对线程这方面的东西完全没接触过
如果你有什么心得,还请贴出来让大家共享一下,不管对或错,能写出来就好,就当作是总结或备忘
回复

使用道具 举报

发表于 2003-1-5 20:23:44 | 显示全部楼层
我曾有一段时间在看linux下播放器的源码,学到了不少东西,但是凭我一人之力很难有什么作为,真希望中国也有这样的团队,哪怕是做着玩也好呀。总用别人的东西真是不爽!
回复

使用道具 举报

发表于 2003-1-7 00:07:33 | 显示全部楼层
作者对MPlayer的介绍。
其中有说明为什么用单线程。
http://mplayer.lgb.hu/index-en.html
其它部分更有意思。
回复

使用道具 举报

发表于 2003-1-7 13:27:10 | 显示全部楼层
看完了,的确明白了不少事情,谢谢!
单线程在低版本内核和cpu下工作有很大的优势,免去了多个线程切换所消耗的时间,而且对资源的也有节省。
我认为mplayer的模块化(modularization)是必要的,以现在硬件性能的迅速发展,代码效率已经不是唯一重要的东西了,代码的复用,低耦合的模块架构是趋势。
我热切的期望看到mplayer的c/s架构,以及browser的plugins。
8-)
回复

使用道具 举报

发表于 2003-1-12 21:24:24 | 显示全部楼层
爽!!!!!
回复

使用道具 举报

发表于 2003-1-12 21:29:00 | 显示全部楼层
请问大虾们,我怎么安装软件的时候,怎么会有些安装不起,说差个什么东东,每次都不一样。
回复

使用道具 举报

发表于 2003-1-13 09:48:16 | 显示全部楼层
安什么? mplayer么?
在安装前,先看看她的文档吧,而且有中文的!
http://www.mplayerhq.hu/
回复

使用道具 举报

发表于 2003-4-11 12:07:56 | 显示全部楼层
[quote:e6c470f35c="llc"]这个不清楚,我只是挑部分代码看,而且我对线程这方面的东西完全没接触过
如果你有什么心得,还请贴出来让大家共享一下,不管对或错,能写出来就好,就当作是总结或备忘[/quote]


mplayersource 是在哪个目录啊?我怎么找着,能说详细点吗
回复

使用道具 举报

发表于 2003-4-11 12:16:31 | 显示全部楼层
我用mplayer0.90rc5上述所说的代码全没找着!!!
回复

使用道具 举报

发表于 2003-4-11 18:30:12 | 显示全部楼层
不是吧。有这么夸张吗?
回复

使用道具 举报

发表于 2003-9-6 09:55:30 | 显示全部楼层

我也是

[quote:c3b30151f6="多多少少"]我用mplayer0.90rc5上述所说的代码全没找着!!![/quote]
回复

使用道具 举报

发表于 2003-10-4 14:32:25 | 显示全部楼层
是啊,我也想知道mplayersource在哪里
回复

使用道具 举报

发表于 2003-11-6 17:30:21 | 显示全部楼层
高人啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-19 08:42 , Processed in 0.058800 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表