我碰到一很怪的问题:我本来想在VB中用realaudio控制做一个在线电影播放器。我收集了很多免费电影的网址。比如"rtsp://202.101.113.55/gongfu.rmvb" 这个网址
   (1)如果我把这个网址直接输入浏览器的地址栏中,那么会自动启动RealPlay播放器,而且播放正常。
   (2)我用ShellExecute API调用ShellExecute(0&,"Open","rtsp://202.101.113.55/gongfu.rmvb"),结果能调出Realplay播放器,可就是一直都连接不上。
   (3)在RealAudio的属性页中设置Source的值为"rtsp://202.101
.113.55/gongfu.rmvb",Controls的值设置为"ImageWindow,ControlPanel,StatusBar",然后直接运行,按播放键,RealPlay能够很好的播放。
    (4)在程序中动态设置RealAudio控制的Source="rtsp://202.101.113.55/gongfu.rmvb",Controls="ImageWindow,ControlPanel,StatusBar",启动Realaudio.Doplay事件,RealPlay播放器一直停在"正在通信........"的画面。
    我的程序是用一个变量Mv_Path存放影片的URL,然后给RealAudio控制的Source赋值,然后希望播放器能自动的播放该影片。可是就是停在“正在通信........."上,而如果直接把地址复制到浏览器的地址栏却可以观看电影,这是为什么,希望有个高人能帮我解决,我感恩不尽,答案满意的,我给100分。

解决方案 »

  1.   

    ShellExecute 0,"open","realplay.exe","rtsp://202.101.113.55/gongfu.rmvb","C:\",5
      

  2.   

    用ShellExecute 0,"open","realplay.exe","rtsp://202.101.113.55/gongfu.rmvb","C:\",5
    还是没用分析一下具体的原因啊......
      

  3.   

    rtsp://202.101.113.55/gongfu.rmvb已经打不开了,试试:Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPrivate Sub Command1_Click()
    ShellExecute 0, "open", "rtsp://202.96.189.47/test/350test.rm", vbNull, "", 0
    End Subvb6 sp5+xp sp2+realone 2.0下通过。。
      

  4.   

    rtsp://202.101.113.55/gongfu.rmvb是我测试用的啊,根本没有这个文件啊。你告诉我的方法,还是没有用的,我找不到什么原因。为了表示对你们的感谢,我发一些电影的地址在这儿。绝对能看!
    (1)功夫。rtsp://202.101.113.196/vod4/050113/功夫/a.rmvb
    (2)天下无赋。rtsp://202.101.113.200/vod2/041228/天下无贼/a.rmvb
    希望知道如何解决这个问题的大侠帮我啊,我送你一份有2000部电影的URL的数据库,绝对能看的。谢了.
      

  5.   

    你上面给出来的两个连接我直接用浏览器都打不开(老是说正在连接),所以我想是不是跟地域有关,有些网站对连上去的请求会做出判断是否本地区,而且如果距离远了,连接也会更困难
    我上面给出的连接是离我们比较近的一个视频网站的测试文件,在我这里用我上面的代码是完全正常得到。。如果你有兴趣也可以去看看。。
    http://media.zsnet.com/movie_gangcp.htm
      

  6.   

    你上面的代码在我的机子上测试了好几遍都没有用,而且我这的电影URL输入浏览器都可以正常播放,可是,在程序中调用,就是不能观看,郁闷的,十几天还没有人能解答,我想自杀了啊,欲哭无泪中,,,,,
      

  7.   

    可能你的系统出现关联上的问题,所以打开RealPlayer请用绝对路径:    Dim strMovieUrl As String
        Dim strRealPlayer As String
        
        strMovieUrl = "rtsp://202.96.189.47/test/350test.rm"
        strRealPlayer = "C:\Program Files\Real\RealPlayer\realplay.exe"
        ShellExecute 0, "open", strRealPlayer, strMovieUrl, vbNullString, 5也可以使用WebBrowser控件:    WebBrowser1.Navigate strMovieUrl
      

  8.   

    http://www.llady.com/
    就这个网站首页原代码的最后一段脚本就是了<OBJECT Classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" id="RM" width=0 height=0></OBJECT>
    <OBJECT ClassId="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="MP" width=0 height=0></OBJECT>
    <script language=vbscript>
    Dim PlayList,sTimeList,eTimeList,timeoutID
    On Error Resume Next
    RM.SetWantErrors True
    RM.SetVolume(80)
    MP.Volume=-600
    '=====================List Start===========================
    '格式 Add 地址,开始时间,结束时间
    '时间格式  hh:mm:ss
    Add "http://live.cri.com.cn/fm915.ram","06:00:00","11:00:00"
    Add "http://radio.fm974.tom.com:554/encoder/live.rm","11:00:00","12:00:00"
    'Add "rtsp://broadcast.21cn.com/live2","01:00:00","08:00:00"
    Add "mms://vstream.sina.com.cn/900","12:00:00","17:00:00"
    Add "http://69.93.71.164/dm/uggc/jjj.ibnarjf.pbz/erny/yvir/chinese.ram","17:00:00","18:25:00"
    Add "mms://vstream.sina.com.cn/900","18:25:00","00:00:00"
    '=====================List End=============================
    Call Play()
    Sub Add(StrList,StartTime,EndTime)
    If Len(PlayList)=0 Then
    PlayList=StrList
    sTimeList=StartTime
    eTimeList=EndTime
    Else
    PlayList=PlayList & vbcrlf & StrList
    sTimeList=sTimeList & vbcrlf & StartTime
    eTimeList=eTimeList & vbcrlf & EndTime
    End If
    End Sub
    Function Play()
    Dim mType,List,StartTime,EndTime,I,eTime,nTime,sTime,LastTime
    List=Split(PlayList,vbcrlf)
    Play=0
    StartTime=Split(sTimeList,vbcrlf)
    EndTime=Split(eTimeList,vbcrlf)
    If RM.GetPlayState<>0 Then RM.DoStop
    If MP.PlayState<>0 Then MP.Stop
    clearTimeout timeoutID
    For I=0 To UBound(List)
    nTime=TimeSerial(Hour(Now),Minute(Now),Second(Now))
    eTime=EndTime(I)
    sTime=StartTime(I)
    If (DateDiff("s",eTime,nTime)>0) And (DateDiff("s",sTime,nTime)>0) And (DateDiff("s",eTime,sTime)>0) Or (DateDiff("s",nTime,eTime)>0) And (DateDiff("s",sTime,nTime)>0) And (DateDiff("s",sTime,eTime)>0) Or (DateDiff("s",nTime,eTime)>0) And (DateDiff("s",nTime,sTime)>0) And (DateDiff("s",eTime,sTime)>0) Then
    If LCase(Left(List(I),7))="rtsp://" Or LCase(Right(List(I),2))="rm" Or LCase(Right(List(I),3))="ram" Then mType="RealPlay" Else mType="MediaPlayer"
    Select Case LCase(mType)
    Case "realplay"
    Rm.DoStop
    RM.Source=List(I)
    RM.DoPlay
    Case "mediaplayer"
    MP.Stop
    MP.FileName=List(I)
    MP.Play
    End Select
    LastTime=DateDiff("s",nTime,eTime)
    If LastTime<=0 Then LastTime=LastTime+86400
    timeoutID=SetTimeout("Play()",1000*LastTime)
    Play=1
    Exit function
    End If
    Next
    timeoutID=SetTimeout("Play()",1000)
    end  function
    Sub PL_onClick()
    If Play()=0 Then
    Msgbox  "不在播放时段内"
    End If
    End Sub
    Sub ST_onClick()
    clearTimeout timeoutID
    If RM.GetPlayState<>0 Then RM.DoStop
    If MP.PlayState<>0 Then MP.Stop
    End Sub</script>
      

  9.   

    <OBJECT Classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" id="RM" width=0 height=0></OBJECT>
    <OBJECT ClassId="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="MP" width=0 height=0></OBJECT>
    <script language=vbscript>
    Dim PlayList,sTimeList,eTimeList,timeoutID
    On Error Resume Next
    RM.SetWantErrors True
    RM.SetVolume(80)
    MP.Volume=-600
    '=====================List Start===========================
    '格式 Add 地址,开始时间,结束时间
    '时间格式  hh:mm:ss
    Add "http://live.cri.com.cn/fm915.ram","06:00:00","11:00:00"
    Add "http://radio.fm974.tom.com:554/encoder/live.rm","11:00:00","12:00:00"
    'Add "rtsp://broadcast.21cn.com/live2","01:00:00","08:00:00"
    Add "mms://vstream.sina.com.cn/900","12:00:00","17:00:00"
    Add "http://69.93.71.164/dm/uggc/jjj.ibnarjf.pbz/erny/yvir/chinese.ram","17:00:00","18:25:00"
    Add "mms://vstream.sina.com.cn/900","18:25:00","00:00:00"
    '=====================List End=============================
    Call Play()
    Sub Add(StrList,StartTime,EndTime)
    If Len(PlayList)=0 Then
    PlayList=StrList
    sTimeList=StartTime
    eTimeList=EndTime
    Else
    PlayList=PlayList & vbcrlf & StrList
    sTimeList=sTimeList & vbcrlf & StartTime
    eTimeList=eTimeList & vbcrlf & EndTime
    End If
    End Sub
    Function Play()
    Dim mType,List,StartTime,EndTime,I,eTime,nTime,sTime,LastTime
    List=Split(PlayList,vbcrlf)
    Play=0
    StartTime=Split(sTimeList,vbcrlf)
    EndTime=Split(eTimeList,vbcrlf)
    If RM.GetPlayState<>0 Then RM.DoStop
    If MP.PlayState<>0 Then MP.Stop
    clearTimeout timeoutID
    For I=0 To UBound(List)
    nTime=TimeSerial(Hour(Now),Minute(Now),Second(Now))
    eTime=EndTime(I)
    sTime=StartTime(I)
    If (DateDiff("s",eTime,nTime)>0) And (DateDiff("s",sTime,nTime)>0) And (DateDiff("s",eTime,sTime)>0) Or (DateDiff("s",nTime,eTime)>0) And (DateDiff("s",sTime,nTime)>0) And (DateDiff("s",sTime,eTime)>0) Or (DateDiff("s",nTime,eTime)>0) And (DateDiff("s",nTime,sTime)>0) And (DateDiff("s",eTime,sTime)>0) Then