实验室作了一个j2ee的教学系统,在windows下和x86 linux下都跑得不错,音频和视频都使用adobe flash player来实现,但是7.7日接到任务说争取要让系统能在"龙芯"debian linux上面跑,现在改原来的程序时间不够,期望能在firefox插件上下功夫,现在播放音频和视频的代码如下:
flash插件通过src属性的.swf后缀确定使用flash来播放相应的flv格式流或者Mp3等东西,因为adboe flash插件不支持"龙芯"debian linux,所以得改进插件
基本思想:把src属性和flashvar属性读出来,进行变换,以访问到正确的媒体的文件.测试linux下的mplayer播放flv格式和Mp3等都非常好,决定就使用Mplayer
起初,想直接作找个firefox插件,把flashvar值提取出来赋值给src.看了一天firefox插件相关的的xul,js等文档,查看了mediawrap,mediaconnectivity插件的源码,到星期天下午,终于把任务完成了.
这其中最大的感触是:作插件的时候怎么调试啊?开始时连printf都不知道往那个地方打,最后才发现firefox提供的console service,可以把调试信息往"错误控制台"里面输出.
改了,完成了,可是遗憾的是调用的mplayer是作为独立的应用程序在运行,没有嵌入到firefox里面去!才发现虽然花了2天时间用xul,js的方式完成任务,结果是不符合要求!
于是找了mplayerplug-in插件,在龙芯的库里面没有,自己于是拿了apt-get source 了ubuntu的源拿到龙芯上编译.相关的依赖库虽然和ubuntu的名称不同,所幸还是比较顺利的建立了编译环境.
以前自己从来没有在linux下作过c++开发,自己也没有用C++作过任何的项目,但是根据自己的思路:不就是把src的属性用flashvar属性作一下转换吗?不熟习C++也没关系,会点基本语法就行.
于是看makefile文件,看头文件,看源码,大概理清了流程,很快星期2就把从浏览器传给plugin的参数的src属性给改过来了,测试,通不过!
于是继续仔细看源码,发现真正调用的时候是用的stream->url,于是想改stream->url属性,确发现是const char *,不许改,死马当活马,找到系统库的头文件,改成char *,改调stream->url的值,结果还是不行!
"当实在没法子的时候,去看手册吧",于是星期5把dev.mozilla.org上关于plugin的文档仔细看了个几次:弄清了流程:firefox->根据网页查找合适的插件->初始化插件->实例化->播放文件.设想只要在实例化插件以前把参数改过来就行,测试,仍然不行!
然后才发现在插件初始化时