控制realaudio的问题!!!!

人生海海 2005-03-22 10:14:41
我碰到一很怪的问题:我本来想在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分。
...全文
245 点赞 收藏 12
写回复
12 条回复
ct768774 2005年09月09日
<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
回复 点赞
笨狗先飞 2005年04月18日
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>
回复 点赞
笨狗先飞 2005年04月18日
做个记号,回家看看,家里那个是脚本写的,拿来放rm文件没什么问题
回复 点赞
人生海海 2005年04月10日
这个问题放了这么久,还是没有解决,哎,还是要谢谢热心的朋友啊
回复 点赞
人生海海 2005年04月03日
问题依旧没有解决啊
回复 点赞
人生海海 2005年03月28日
你上面的代码在我的机子上测试了好几遍都没有用,而且我这的电影URL输入浏览器都可以正常播放,可是,在程序中调用,就是不能观看,郁闷的,十几天还没有人能解答,我想自杀了啊,欲哭无泪中,,,,,
回复 点赞
baixiao2222 2005年03月28日
可能你的系统出现关联上的问题,所以打开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
回复 点赞
lsftest 2005年03月25日
你上面给出来的两个连接我直接用浏览器都打不开(老是说正在连接),所以我想是不是跟地域有关,有些网站对连上去的请求会做出判断是否本地区,而且如果距离远了,连接也会更困难。。。
我上面给出的连接是离我们比较近的一个视频网站的测试文件,在我这里用我上面的代码是完全正常得到。。如果你有兴趣也可以去看看。。
http://media.zsnet.com/movie_gangcp.htm
回复 点赞
人生海海 2005年03月24日
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的数据库,绝对能看的。谢了.
回复 点赞
lsftest 2005年03月23日
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 Long

Private Sub Command1_Click()
ShellExecute 0, "open", "rtsp://202.96.189.47/test/350test.rm", vbNull, "", 0
End Sub

vb6 sp5+xp sp2+realone 2.0下通过。。。。。。。。
回复 点赞
人生海海 2005年03月23日
用ShellExecute 0,"open","realplay.exe","rtsp://202.101.113.55/gongfu.rmvb","C:\",5
还是没用分析一下具体的原因啊......
回复 点赞
现在还是人类 2005年03月22日
ShellExecute 0,"open","realplay.exe","rtsp://202.101.113.55/gongfu.rmvb","C:\",5
回复 点赞
发动态
发帖子
多媒体
创建于2007-09-28

621

社区成员

8284

社区内容

VB 多媒体
社区公告
暂无公告