如何在Vbscript中检查视频或音频流是否联机?

如何在Vbscript中检查视频或音频流是否联机?,vbscript,http-headers,video-streaming,audio-streaming,http-live-streaming,Vbscript,Http Headers,Video Streaming,Audio Streaming,Http Live Streaming,我想知道在vbscript中检查视频或音频流是否联机时要查找的参数或值是什么 所以这就是我一直尝试的代码,但是,它给了我一个错误的结果,因为我用VLC检查了所有这些流,它们工作5/5,但是用这个脚本,第二个和第三个流给了我脱机 Option Explicit Dim Title,URLArray,URL,ws,Msg,Data Title = "Audio and Video Stream Checker" URLArray = Array("https://5ac31d8a4c9af.stre

我想知道在vbscript中检查视频或音频流是否联机时要查找的参数或值是什么

所以这就是我一直尝试的代码,但是,它给了我一个错误的结果,因为我用VLC检查了所有这些流,它们工作5/5,但是用这个脚本,第二个和第三个流给了我脱机

Option Explicit
Dim Title,URLArray,URL,ws,Msg,Data
Title = "Audio and Video Stream Checker"
URLArray = Array("https://5ac31d8a4c9af.streamlock.net/saheltv/_definst_/myStream/chunklist_w956788169.m3u8"_
,"http://aska.ru-hoster.com:8053/autodj"_
,"http://www.chocradios.ch/djbuzzradio_windows.mp3.asx")

Call ForceCScriptExecution()

For Each URL in URLArray
    wscript.echo "The stream " & URL & " is "& CheckOnline(URL) & vbCrlf & String(100,"-")
Next
'----------------------------------------------------
Function CheckOnline(URL)
    On Error Resume Next
    Const WHR_EnableRedirects = 6
    Dim h,AllResponseHeaders
    Set h = CreateObject("WinHttp.WinHttpRequest.5.1")
    h.Option(WHR_EnableRedirects) = False 'disable redirects
    h.Open "HEAD", URL , False
    h.Send()
    AllResponseHeaders = h.GetAllResponseHeaders()
    wscript.echo AllResponseHeaders 
    If Err.number = 0 Then
        If h.status = 200 OR h.status = 201 OR h.status = 202 OR h.status = 203 OR h.status = 204 Then
            CheckOnline = "ONLINE"
        Else
            CheckOnline = "OFFLINE"
        End IF
    Else
        CheckOnline = "OFFLINE" & vbCrlf & Err.Description
        On Error Goto 0
    End IF
End Function
'----------------------------------------------------
Sub ForceCScriptExecution()
    Dim Arg, Str, cmd
    cmd = "CMD /K Title " & Title &" & color 0A & "
    If Not LCase( Right( WScript.FullName, 12 ) ) = "\cscript.exe" Then
        For Each Arg In WScript.Arguments
            If InStr( Arg, " " ) Then Arg = """" & Arg & """"
            Str = Str & " " & Arg
        Next
        CreateObject( "WScript.Shell" ).Run _
           cmd & "cscript //nologo """ & _
            WScript.ScriptFullName & _
            """ " & Str
        WScript.Quit
    End If
End Sub
'--------------------------------------------------
我得到的回应如下:

Cache-Control: no-cache
Date: Sat, 28 Dec 2019 00:14:27 GMT
Content-Length: 232
Content-Type: application/vnd.apple.mpegurl
Accept-Ranges: bytes
Server: WowzaStreamingEngine/4.7.8
Access-Control-Expose-Headers: Date, Server, Content-Type, Content-Length
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: OPTIONS, GET, POST, HEAD
Access-Control-Allow-Headers: Content-Type, User-Agent, If-Modified-Since, Cache-Control, Range


The stream https://5ac31d8a4c9af.streamlock.net/saheltv/_definst_/myStream/chunklist_w956788169.m3u8 is ONLINE
-------------------------------------------------------------------------------
Cache-Control: no-cache
Date: Sat, 28 Dec 2019 00:14:28 GMT
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Server: Icecast 2.4.2


The stream http://aska.ru-hoster.com:8053/autodj is OFFLINE
-------------------------------------------------------------------------------
Connection: keep-alive
Date: Sat, 28 Dec 2019 00:14:28 GMT
Content-Type: text/html; charset=iso-8859-1
Location: https://www.chocradios.ch/djbuzzradio_windows.mp3.asx
Server: nginx
X-Powered-By: PleskLin


The stream http://www.chocradios.ch/djbuzzradio_windows.mp3.asx is OFFLINE
-------------------------------------------------------------------------------

以下是WMP的可能实现:

选项显式
forceCScriptExecution“音频和视频流检查器”
测试流
子测试流()
模糊URL
暗源URL
暗等值线
暗媒体名
Dim streamUrl
URL=数组(_
"https://5ac31d8a4c9af.streamlock.net/saheltv/_definst_/myStream/chunklist_w956788169.m3u8", _
"http://aska.ru-hoster.com:8053/autodj", _
"http://www.chocradios.ch/djbuzzradio_windows.mp3.asx" _
)
对于URL中的每个sourceUrl
WScript.Echo“”
Echo“sourceUrl”和sourceUrl
Echo“正在检查…”
选中StreamOnline sourceUrl,30,isOnline,mediaName,streamUrl
Echo“isOnline”和isOnline
Echo“mediaName”和mediaName
Echo“streamUrl”和streamUrl
下一个
端接头
子检查StreamOnline(源URL、超时、isOnline、mediaName、streamUrl)
暗wmp
昏厥
暗t
设置wmp=CreateObject(“WMPlayer.OCX”)
wmp.settings.autostart=False
wmp.url=sourceUrl
wmp.settings.volume=0
wmp.controls.play
t=日期添加(“s”,超时,现在)
做
isOnline=wmp.playState=3
isTimeout=Now>=t
WScript.Sleep 5
循环直到isOnline或isTimeout
mediaName=wmp.currentMedia.Name
streamUrl=wmp.currentMedia.sourceUrl
wmp.controls.stop
端接头
子部队司令部执行(职务)
Dim arg,args,cmd
cmd=“%comspec%/K Title”&Title&“&color 0A&”
如果不是LCase(右(WScript.FullName,12))=“\cscript.exe”,则
对于WScript.Arguments中的每个参数
如果指令(arg,“”),则arg=“”&arg&“
args=args&&&arg
下一个
CreateObject(“WScript.Shell”)。运行_
cmd&“cscript//nologo”“”和_
WScript.ScriptFullName&_
“”(&args)
WScript.Quit
如果结束
端接头

这是什么意思
MsgBox URL&vbCrlf&All
,状态是什么,如果有错误,错误号是什么?@Mark我刚刚编辑了我的问题,请参考您的评论!我使用HTTP调试器Fiddler()访问了IE中的第三个调试器,它似乎使用了一个名为
icy
的协议,并且数据没有通过HTTPS或HTTP输入。那么每个调试器的状态是什么呢?似乎第二个URL的请求不起作用。您可以尝试通过从
位置
标题向URL发出的下一个请求来解开第三个URL。虽然我猜
WinHttp.WinHttpRequest.5.1
(以及其他HTTP请求)由于连接的变化而不适合该任务。我会尝试寻找一些支持命令行界面或ActiveX的应用程序,能够确定流是否处于活动状态,并将为您在后台以静默方式启动的所有工作。这可能是VLC或WMP,或其他…结果是准确的!谢谢你,伙计!我们可以将静音功能添加到
wmp
对象中吗?播放流时是否有任何不良声音?我在测试时没有注意到这种情况…@Hackoo我添加了
wmp.settings.volume=0
,无论如何,这应该会使检查完全静音。