请教各位老大:
   我在datalist中databinder了编号,名称,简介和一个linkbutton(在线播放),请问各位这个在线播放如何实现呀?播放的是RM文件,本机上的;在数据库中有文件名一项,只要根据这个文件名然后播放本机上的RM文件即可,这个功能能实现吗?

解决方案 »

  1.   

    楼主可参考如下代码:1><body>
    <embed id="MediaPlaye" name="MediaPlaye" src='31.mp3' autostart=1 loop=1></embed>
    <input type=button onclick="document.embeds('MediaPlaye').stop()" value=stop>
    <input type=button onclick="document.embeds('MediaPlaye').play()" value=play>
    </body>2><html>
    <body>
    <p><object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="MediaPlayer1" width="281" height="238">
      <param name="AudioStream" value="-1">
      <param name="AutoSize" value="0">
      <param name="AutoStart" value="-1">
      <param name="AnimationAtStart" value="-1">
      <param name="AllowScan" value="-1">
      <param name="AllowChangeDisplaySize" value="-1">
      <param name="AutoRewind" value="0">
      <param name="Balance" value="0">
      <param name="BaseURL" value>
      <param name="BufferingTime" value="5">
      <param name="CaptioningID" value>
      <param name="ClickToPlay" value="-1">
      <param name="CursorType" value="0">
      <param name="CurrentPosition" value="-1">
      <param name="CurrentMarker" value="0">
      <param name="DefaultFrame" value>
      <param name="DisplayBackColor" value="0">
      <param name="DisplayForeColor" value="16777215">
      <param name="DisplayMode" value="0">
      <param name="DisplaySize" value="4">
      <param name="Enabled" value="-1">
      <param name="EnableContextMenu" value="-1">
      <param name="EnablePositionControls" value="-1">
      <param name="EnableFullScreenControls" value="0">
      <param name="EnableTracker" value="-1">
      <param name="Filename" value>
      <param name="InvokeURLs" value="-1">
      <param name="Language" value="-1">
      <param name="Mute" value="0">
      <param name="PlayCount" value="1">
      <param name="PreviewMode" value="0">
      <param name="Rate" value="1">
      <param name="SAMILang" value>
      <param name="SAMIStyle" value>
      <param name="SAMIFileName" value>
      <param name="SelectionStart" value="-1">
      <param name="SelectionEnd" value="-1">
      <param name="SendOpenStateChangeEvents" value="-1">
      <param name="SendWarningEvents" value="-1">
      <param name="SendErrorEvents" value="-1">
      <param name="SendKeyboardEvents" value="0">
      <param name="SendMouseClickEvents" value="0">
      <param name="SendMouseMoveEvents" value="0">
      <param name="SendPlayStateChangeEvents" value="-1">
      <param name="ShowCaptioning" value="0">
      <param name="ShowControls" value="-1">
      <param name="ShowAudioControls" value="-1">
      <param name="ShowDisplay" value="0">
      <param name="ShowGotoBar" value="0">
      <param name="ShowPositionControls" value="-1">
      <param name="ShowStatusBar" value="0">
      <param name="ShowTracker" value="-1">
      <param name="TransparentAtStart" value="0">
      <param name="VideoBorderWidth" value="0">
      <param name="VideoBorderColor" value="0">
      <param name="VideoBorder3D" value="0">
      <param name="Volume" value="0">
      <param name="WindowlessVideo" value="0">
    </object>
    </p>
    </body>
    </html>3>
    http://msdn.microsoft.com/library/en-us/wmplay/mmp_sdk/simpleexampleofscriptinginawebpage.asp?frame=true<HTML>
    <HEAD>
    </HEAD>
    <BODY>
    <OBJECT ID="Player" height="0" width="0"
      CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
    </OBJECT>
    <INPUT TYPE="BUTTON" NAME="BtnPlay" VALUE="Play" OnClick="StartMeUp()">
    <INPUT TYPE="BUTTON" NAME="BtnStop" VALUE="Stop" OnClick="ShutMeDown()">
    <SCRIPT>
    <!--function StartMeUp ()
    {
        Player.URL = "laure.wma";
    }function ShutMeDown ()
    {
        Player.controls.stop();
    }-->
    </SCRIPT>
    </BODY>
    </HTML>4>www.souxin.com5>rm文件制作出来了,在本地用REALPLAY可以播放,但放到服务器还是报告“出现常规错误。”我嵌入播放器的代码是这么写的:
    <object width="500" height="450" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"> 
    <param name="CONTROLS" value="ImageWindow"> 
    <param name="CONSOLE" value="Video"> 
    <param name="CENTER" value="TRUE"> 
    <param name="MAINTAINSPECT" value="TRUE"> 
    <param name="SRC" value="../medias/<%=Request("id")%>.rm"> 
    </object>其中Request("id")是rm文件名。是不是不能这样直接播放RM文件?或者还要架设什么流媒体服务器?
    <span id="mp3"></span><script language="JavaScript">
    var mPlayCode = "<OBJECT id=MediaPlayer width=360 height=42 codeBase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,1,5,217 type=application/x-oleobject classid=clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95></OBJECT>";function PlayOf(Obj){
     if (document.all["mp3"].innerHTML != mPlayCode){document.all["mp3"].innerHTML = mPlayCode;}
     MediaPlayer.stop();
     MediaPlayer.EnableContextMenu = 0;
     MediaPlayer.PlayCount = 99;
     MediaPlayer.Volume = -1;
     MediaPlayer.AutoStart = 1;
     MediaPlayer.Filename = Obj;
    }
    </script><a href="arli://" onclick="PlayOf('/MPGFILE/MYFILE.MPG');return false;">click Play</a>
    <object classid="clsid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA" id="RealAudio1" width="300" height="227">
     <param name="_ExtentX" value="7938">
     <param name="_ExtentY" value="6006">
     <param name="AUTOSTART" value="-1">
     <param name="SHUFFLE" value="-1">
     <param name="PREFETCH" value="0">
     <param name="NOLABELS" value="0">
     <param name="SRC" value="/rm/大话西游之月光宝盒A.rmvb">
     <param name="CONTROLS" value="ImageWindow,controlpanel">
     <param name="LOOP" value="0">
     <param name="NUMLOOP" value="0">
     <param name="CENTER" value="-1">
     <param name="MAINTAINASPECT" value="0">
     <param name="BACKGROUNDCOLOR" value="#000000">
    </object>
    在我这是正常的,如果你出现常规错误(一般是文件没找到或不正常的传输格式)就可能是服务器对rm 和mpg 之类的进行了mime 映射,使它不以流的方式传输,目前有很多的空间是这样以避免流量超载。摘自CSDN.
      

  2.   

    这样定位就好定位了,前台datalist代码<asp:datalist id="score" runat="server" Width="780" Height="80px">
    <headertemplate>
    </headertemplate>
    <itemtemplate>
    <table width="780" border="0" cellpadding="0" cellspacing="0">
    <tr id="chk" height="30" Runat="server">
    <td width="30">
    <div align="Center">
    <input type="hidden" id="SelectedID" runat="server" value='<%# DataBinder.Eval(Container.DataItem, "id")%>' NAME="SelectedID"/>
    <asp:CheckBox ID="chkExport" onclick="javascript:clickcompareBox(this);" Runat="server" />
    </div>
    </td>
    <td width="390" rowspan="1" class="zhong13h"><a href='trydetail.aspx?id=<%# DataBinder.Eval(Container.DataItem,"id").ToString() %>' target=_blank>
    <%# CutString(DataBinder.Eval(Container.DataItem,"title").ToString(),27) %>
    </a>
    </td>
    <td width="260" class="zhong13h">
    <%# CutString(DataBinder.Eval(Container.DataItem,"keys").ToString(),17) %>
    </td>
    <td width="100" rowspan="1" class="zhong13h"><div align="center"><%# DataBinder.Eval(Container.DataItem,"lutime","{0:D}").ToString() %></div>
    </td>
    </tr>
    </table>
    </itemtemplate>
    </asp:datalist>
    后台定位代码
    private void Button1_Click(object sender, System.EventArgs e)
    {
    //  System.Web.UI.WebControls.CheckBox chkExport;
    System.Collections.ArrayList oExArgs = new System.Collections.ArrayList();
    string sID;
    string id;
    foreach(DataListItem oDataListItem in score.Items)
    {
    chkExport = (CheckBox)oDataListItem.FindControl("chkExport");
    if( chkExport.Checked)
    {
    sID = ((HtmlInputHidden)oDataListItem.FindControl("SelectedID")).Value;
    oExArgs.Add(sID);
    }
    }
    int i = 0;
    string s="select id,title,keys,content,cw_pic,d_class,x_class,lutime from cw_jy where 1=1 ";
    string s1="";
    for( i = 0;i<oExArgs.Count;i++)
    {
    if (oExArgs[i]!=null)
    {
    id=oExArgs[i].ToString().Trim();
    if (i==0)
    {
    s1=s1+" and id="+id;
    }
    else
    {
    s1=s1+" or id="+id;
    }          

    }
    else
    {

    Response.Write("<script laguage='javascript'>history.back();</script>");
    }

    }
    if(s!=(s+s1))
    {
    Session["str"]=s+s1;
    Response.Write("<script laguage='javascript'>window.open('detail.aspx');</script>");
    }
    else
    {
        Response.Write("<script laguage='javascript'>alert('请选择!');</script>");
    } }
      

  3.   

    谢谢楼上的,播放的时候可以这么解决,但是现在因为我用的DATALIST控件,然后牵扯到一个itemindex或commandname的问题,也就是如何定位到一个纪录这样一个问题!
    另外大家用ASP.NET做在线播放的时候,一般都怎么做啊?文件那么多,也不能一个一个连吧,况且文件名也没有什么关系,好像循环也不行啊,,,,???唉,,,真是难啊,,,想不到答案!
      

  4.   

    不好意思,,,上面的话是对renyu732兄弟说的,,,只不过可能是因为咱们俩同时发帖,所以重了,,谢谢你了,你的代码应该是连播的嘛,比我的要求还高一些,我只要求能够单独播放即可,所以我只要一个hidden input定位一下应该就可以了,checkbox我应该就不需要了,唉,不过问题还没完啊,值取出来了,如何播放呢,我想用一个hidden input绑定到文件名字段上去,但如何调用realplayer来播放呢?再次谢谢大家了!
      

  5.   

    到中午吃饭时间了,问题依然没有解决,,,唉,,,郁闷呀!难道用c#无法播放rm文件吗?
      

  6.   

    你可在当前页面做链接,点击此链接,则客户端将自动打开播放器进行播放.现在主要是要如何将你的名称转换为电影名.你可在SQL中进行生成.大致如下:
    sql = "select 编号,名称,简介,'../rm/' & 电影名称字段名 & '.rm' as rmname from table ";
    然后根据上述的SQL语句,求取数据,再绑定到datalist中,则生成的链接中,自然就如上述形成的链接,点击即可播放.
    其中的路径,你必须自行设定.
      

  7.   

    谢谢hchxxzx了,但我试了一下,您说的做链接,,具体能说说是什么意思吗?是加一个hyperlink吗,然后databinder一下,就可以了吗?您说的数据库的写法完全正确,再次谢谢!
      

  8.   

    我是这样写的代码,<asp:HyperLink id="HyperLink1" runat="server">在线播放 <%# DataBinder.Eval(Container.DataItem,"rmname") %></asp:HyperLink>,不过好像连链接都没有了,,觉得自己好笨,,呵呵!
      

  9.   

    <asp:HyperLink id="HyperLink1" runat="server" NavigateUrl='<%# DataBinder.Eval(Container.DataItem,"rmname") %>'>在线播放</asp:HyperLink>
      

  10.   

    哦,原来databinder还能这么用的哟,,真是太谢谢hchxxzx了!我已经试验成功,不过好像速度有点慢,中间有个下载的过程,现在我是在自己机子上做,到时弄到服务器上会不会非常非常慢啊?