现在在做一个音乐连续播放的功能,当用户选择几首音乐的时候弹出来一个播放器的筐用来播放音乐,功能我都实现拉 实现步骤是
1,根据用户选择的音乐文件生成一个asx文件,然后把这个asx文件的地址发给音频 播放器,音频 播放器代码如下:
<object id='MediaPlayer1' width='460' height='68' classid='CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95'
codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715'
align='baseline' border='0' standby='Loading Microsoft Windows Media Player components...'
type='application/x-oleobject'>
<param name='invokeURLs' value='0'>
<param name='FileName' value='"+value+"' >
<param name='ShowControls' value='1'>
<param name='ShowPositionControls' value='0'>
<param name='ShowAudioControls' value='1'>
<param name='ShowTracker' value='1'>
<param name='ShowDisplay' value='0'>
<param name='ShowStatusBar' value='1'>
<param name='AutoSize' value='0'>
<param name='ShowGotoBar' value='0'>
<param name='ShowCaptioning' value='0'>
<param name='AutoStart' value='-1'>
<param name='PlayCount' value='0'>
<param name='AnimationAtStart' value='0'>
<param name='TransparentAtStart' value='0'>
<param name='AllowScan' value='0'>
<param name='EnableContextMenu' value='1'>
<param name='ClickToPlay' value='0'>
<param name='DefaultFrame' value='datawindow'>
<embed id='MediaPlayer2' src='"+value+"' align='baseline' border='0' width='468' height='68'
type='application/x-mplayer2'
pluginspage='http://www.microsoft.com/isapi/redir.dll?prd=windows&sbp=mediaplayer&ar=media&sba=plugin&'
name='MediaPlayer' showcontrols='1' showpositioncontrols='0'
showaudiocontrols='1' showtracker='1' showdisplay='0'
showstatusbar='1'
autosize='0'
showgotobar='0' showcaptioning='0' autostart='1' autorewind='0'
animationatstart='0' transparentatstart='0' allowscan='1'
enablecontextmenu='1' clicktoplay='0'
defaultframe='datawindow' invokeurls='0'>
</embed>
</object>其中 <param name='FileName' value='"+value+"' > 这个value 就是asx文件的地址 但是现在有个问题是,每次都要生成一个asx文件,用户停止播放后就成为了垃圾文件拉,请问那位兄弟有没有更好的解决方法呢?
1,根据用户选择的音乐文件生成一个asx文件,然后把这个asx文件的地址发给音频 播放器,音频 播放器代码如下:
<object id='MediaPlayer1' width='460' height='68' classid='CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95'
codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715'
align='baseline' border='0' standby='Loading Microsoft Windows Media Player components...'
type='application/x-oleobject'>
<param name='invokeURLs' value='0'>
<param name='FileName' value='"+value+"' >
<param name='ShowControls' value='1'>
<param name='ShowPositionControls' value='0'>
<param name='ShowAudioControls' value='1'>
<param name='ShowTracker' value='1'>
<param name='ShowDisplay' value='0'>
<param name='ShowStatusBar' value='1'>
<param name='AutoSize' value='0'>
<param name='ShowGotoBar' value='0'>
<param name='ShowCaptioning' value='0'>
<param name='AutoStart' value='-1'>
<param name='PlayCount' value='0'>
<param name='AnimationAtStart' value='0'>
<param name='TransparentAtStart' value='0'>
<param name='AllowScan' value='0'>
<param name='EnableContextMenu' value='1'>
<param name='ClickToPlay' value='0'>
<param name='DefaultFrame' value='datawindow'>
<embed id='MediaPlayer2' src='"+value+"' align='baseline' border='0' width='468' height='68'
type='application/x-mplayer2'
pluginspage='http://www.microsoft.com/isapi/redir.dll?prd=windows&sbp=mediaplayer&ar=media&sba=plugin&'
name='MediaPlayer' showcontrols='1' showpositioncontrols='0'
showaudiocontrols='1' showtracker='1' showdisplay='0'
showstatusbar='1'
autosize='0'
showgotobar='0' showcaptioning='0' autostart='1' autorewind='0'
animationatstart='0' transparentatstart='0' allowscan='1'
enablecontextmenu='1' clicktoplay='0'
defaultframe='datawindow' invokeurls='0'>
</embed>
</object>其中 <param name='FileName' value='"+value+"' > 这个value 就是asx文件的地址 但是现在有个问题是,每次都要生成一个asx文件,用户停止播放后就成为了垃圾文件拉,请问那位兄弟有没有更好的解决方法呢?
解决方案 »
- 有没有人知道怎样改变name的值啊...
- 用过javamai的请进l
- 这个500问题是错在哪儿?
- 求助:使用jexcelapi组件的问题[java.lang.NoSuchMethodError: common.Assert.verify(Z)V]
- 紧急求救,郁闷了一宿,还是没有弄出来
- jbuilder2005中如何把自带的struts1.1改称1.2的。怎么配置阿
- 用JFreeChart生成曲线图,设置时间轴的问题
- 急急急急!!将List的值赋给一个String[][]二维数组的问题
- 很头疼的一个关于javascript的问题.
- 请帮看:我在jsp里这样处理是否恰当?
- 请大家帮忙谢谢.送100分
- 正四面体体积
一个方法是:
生成ASX文件的时候,用当前时间命名.并指定存放在一个专门的目录中(查找起来更快).
在某个合适的页面中去该目录查找时间(从文件名就可以分析得到)在几个小时(具体的楼主根据实际情况决定)之前的文件,然后删除之.
这样,系统中最多只保留最近正在使用的几个.另外就是,如果有必要,可以为每个用户建立一个固定的播放列表文件,每次改变内容都存在里面,这样该用户下次来还可以继续听上次的内容.
www.ilkj.net
我的音乐连续播放功能,就是利用asx播放列表,但这个文件不用每次生成的啊!
啥叫“动态网站”,直白点说,当然不能生成一堆垃圾文件了!你可以把asx文件写成jsp文件,然后在page指令头里用多媒体解析这个jsp文件,就像我们做验证码一样,用image/jpeg解析jsp文件就变成图片了!默认的jsp文件page指令是这样的,<%@page language="java" contentType="text/html; charset=UTF-8" %>,你可以把contentType改成contentType="video/x-ms-asf; charset=gb2312",这样就可以让WMP在线播放器认识这个jsp文件了,然后你把多个音乐文件路径循环写入这个文件,不就OK了!这个是我的站点的JSP连续播放文件源代码,你可以参考一下!
<%@ page language="java" contentType="video/x-ms-asf; charset=gb2312"%>
<%
//音乐文件所在的目录,我这里用的是绝对路径,自己随意
String songid=(String)request.getAttribute("songid");
/*从Servlet中传过来的多个音乐文件,之间用"_"连接
然后再用String类的split("")方法拆分字符串为数组,将字符串数组循环
写入asx标记中*/
String[] str=songid.split("_");
%>
<ASX Version = "3.0">
<%
for(int i=0;i<str.length;i++)
{
/*我的站点音乐文件和JSP程序不在一个服务器上
文件录入数据库时没有加扩展名,所以我下面加上了".wma",自己随意
*/
str[i]=str[i]+".wma";
%>
<Entry>
<Author></Author>
<Copyright>低品质音乐,仅供试听!请支持正版唱片!</Copyright>
<Title></Title>
<Param Name = "WM/AlbumTitle" Value = "爱龙♂空间[www.ilkj.net]" />
<Ref href = "<%=url+str[i]%>" />
</Entry>
<%
}
%>
</ASX>
String songid=(String)request.getAttribute("songid");
是多个音乐文件的完整路径+文件名因为这个jsp是从servlet转请求转发过来的,所以你的在线播放器的中URL就写servlet的地址,然后用RequestDispatcher转向这个jsp就OK了!当然我用的是Struts+Hibernate,我是使用Action的mapping.findForward("")过来的,反正不管怎么样,只要能共享到request里的数据就可以了!你看我的网站还可以看到URL后面有一段长长的字符,这个是jsessionid加上一段随机字符,在session里,10分钟后就会失效,因此这个jsp文件还具有一定的防盗连功能哦!嘿嘿!
如果是同一个JSP,不就混淆了吗?对于ASX,我没有试过播放器是否每切换一首歌就去读远程的ASX文件,如果是象图片那样一次性地把ASX传到客户端,播放器读取传到客户端上的ASX工作的话,就好说了,在播放器页面加载完后直接调用一个删除ASX的过程即可.
JSP文件只有一个,每个用户访问会为不同的请求创建对象,我们需要做的是向JSP文件中传递参数,一个JSP文件就OK了!ASX文件可以写到JSP里动态生成的!什么叫“如果是同一个JSP,不就混淆了吗?”???那你做的网站的首页是不是就一个index.jsp啊?你怎么没一个用户写一个首页文件啊?这个包含ASX的JSP文件就不理解了啊?同样的道理哦!动态网站说直白一点,不就是用一个页面,传递不同的参数,显示不同的内容,给不同的访问者浏览!你要是一个访问者生成一个,那你不如用html做成纯静态的网站!首先说的是,你的思路就不对!www.ilkj.net就是这么做的啊!你看乱套了吗?谢谢!
我只是笔误了,我是说ASX. 对这方面我不太了解,所以想向你继续探讨一下,但不是给你表现嚣张的! 请你先学会如何作人!
-------
如果我是说JSP的话,会说自动删除它吗?? 当然是指ASX.我自己打错了字,也没理由去要求你能具备点起码的理解能力去看明白.但也希望你不要随便用咬人的语气说话. OK??? 这是技术论坛,大家仅就技术问题讨论,不是回帖就一定要比别人更了解这个问题,也可以通过这个探讨并学到不了解的知识.如果你对这个氛围格格不入,技术怎样是没有用的.