gpt4 book ai didi

video - VBScript 中的转换错误

转载 作者:行者123 更新时间:2023-11-28 21:43:09 25 4
gpt4 key购买 nike

我正在使用 VB 脚本将 ARF 文件转换为 MP4 和 WMV 格式。该脚本使用来自网络录制播放器的 API(用于查看和转换 ARF 格式的 Web-Ex 视频)。但是,我遇到了一个非常奇怪的错误。 WMV 转换在我尝试的任何机器上都可以正常工作,但这与 MP4 不同,MP4 只能在我的一台机器上工作,但在我试过的另外两台机器上却不行。

该脚本的工作原理是将位于特定文件夹(在我的例子中是 C 驱动器中名为“Webex”的文件夹)中的所有 ARF 文件转换为 MP4 和 WMV,并将它们保存在同一文件夹中。当我在运行脚本后打开文件夹时,我可以看到在转换过程中创建的某些文件,完成后只剩下 WMV 视频。 MP4 开始转换,然后在某些机器上停止。您可以看到正在创建的“videoname”-mp4.cfg 文件,但随后它立即消失了。

真的不知道问题是什么,我们将不胜感激。

下面是我的脚本:

Option Explicit

'Main

Sub Main
Dim Path
Dim a: a = ListDir("C:\Webex\*.arf")
Dim FileName
Dim FileName1
Dim FileName2
Dim mp4
Dim wmv
Dim objFSO
Dim objFile
Dim objTextFile
Dim WSHShell
Dim StrCMDLine
Dim d: d = ListDir("C:\Webex\*.cfg")
Set WSHShell = CreateObject("WScript.Shell")
For Each FileName In d
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile(Filename)
Next
For Each FileName In a
mp4 = 0
wmv = 0
'WScript.Echo FileName
'WScript.Echo Left(Filename,(Len(Filename)-4))
Dim b: b = ListDir(Left(Filename,(Len(Filename)-4))+".mp4")
For Each FileName1 In b
'WScript.Echo FileName1
mp4 = 1
Next
Dim c: c = ListDir(Left(Filename,(Len(Filename)-4))+".wmv")
For Each FileName2 In c
'WScript.Echo FileName2
wmv = 1
Next
If mp4 = 0 Then
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.CreateTextFile(Left(Filename,(Len(Filename)-4))+"-mp4.cfg")
objTextFile.WriteLine("")
objTextFile.WriteLine("[Console]")
objTextFile.WriteLine("inputfile="+Filename)
objTextFile.WriteLine("media=MP4")
objTextFile.WriteLine("showui=0")
objTextFile.WriteLine("[UI]")
objTextFile.WriteLine("chat=0")
objTextFile.WriteLine("qa=0")
objTextFile.WriteLine("largeroutline=1")
objTextFile.WriteLine("[MP4]")
objTextFile.WriteLine("outputfile="+Left(Filename,(Len(Filename)-4))+".mp4")
objTextFile.WriteLine("width=1024")
objTextFile.WriteLine("height=768")
objTextFile.WriteLine("framerate=8")
objTextFile.Close
End If
If wmv = 0 Then
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.CreateTextFile(Left(Filename,(Len(Filename)-4))+"-wmv.cfg")
objTextFile.WriteLine("[Console]")
objTextFile.WriteLine("inputfile="+Filename)
objTextFile.WriteLine("media=WMV")
objTextFile.WriteLine("showui=0")
objTextFile.WriteLine("PCAudio=0")
objTextFile.WriteLine("[UI]")
objTextFile.WriteLine("largeroutline=0")
objTextFile.WriteLine("[WMV]")
objTextFile.WriteLine("outputfile="+Left(Filename,(Len(Filename)-4))+".wmv")
objTextFile.WriteLine("width=1024")
objTextFile.WriteLine("height=768")
objTextFile.WriteLine("videocodec=Windows Media Video 9")
objTextFile.WriteLine("audiocodec=Windows Media Audio 9.2 Lossless")
objTextFile.WriteLine("videoformat=default")
objTextFile.WriteLine("audioformat=default")
objTextFile.WriteLine("videokeyframes=4")
objTextFile.WriteLine("maxstream=1000")
objTextFile.Close
End If
Next
Dim e: e = ListDir("c:\Webex\*.cfg")
For Each FileName In e
Set objFSO = CreateObject("Scripting.FileSystemObject")
StrCMDLine = "cmd /c C: & CD %windir% & C:\ProgramData\WebEx\WebEx\500\nbrplay.exe -Convert " + """" + FileName + """" + " & exit"
'WScript.Echo StrCMDLine
wshShell.run StrCMDLine ,0,True
objFSO.DeleteFile(Filename)
Next

End Sub

Public Function ListDir (ByVal Path)
Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
If Path = "" Then Path = "*.*"
Dim Parent, Filter
If fso.FolderExists(Path) Then ' Path is a directory
Parent = Path
Filter = "*"
Else
Parent = fso.GetParentFolderName(Path)
If Parent = "" Then If Right(Path,1) = ":" Then Parent = Path: Else Parent = "."
Filter = fso.GetFileName(Path)
If Filter = "" Then Filter = "*"
End If
ReDim a(10)
Dim n: n = 0
Dim Folder: Set Folder = fso.GetFolder(Parent)
Dim Files: Set Files = Folder.Files
Dim File
For Each File In Files
If CompareFileName(File.Name,Filter) Then
If n > UBound(a) Then ReDim Preserve a(n*2)
a(n) = File.Path
n = n + 1
End If
Next
ReDim Preserve a(n-1)
ListDir = a
End Function

Private Function CompareFileName (ByVal Name, ByVal Filter) ' (recursive)
CompareFileName = False
Dim np, fp: np = 1: fp = 1
Do
If fp > Len(Filter) Then CompareFileName = np > Len(name): Exit Function
If Mid(Filter,fp) = ".*" Then ' special case: ".*" at end of filter
If np > Len(Name) Then CompareFileName = True: Exit Function
End If
If Mid(Filter,fp) = "." Then ' special case: "." at end of filter
CompareFileName = np > Len(Name): Exit Function
End If
Dim fc: fc = Mid(Filter,fp,1): fp = fp + 1
Select Case fc
Case "*"
CompareFileName = CompareFileName2(name,np,Filter,fp)
Exit Function
Case "?"
If np <= Len(Name) And Mid(Name,np,1) <> "." Then np = np + 1
Case Else
If np > Len(Name) Then Exit Function
Dim nc: nc = Mid(Name,np,1): np = np + 1
If StrComp(fc,nc,vbTextCompare)<>0 Then Exit Function
End Select
Loop
End Function

Private Function CompareFileName2 (ByVal Name, ByVal np0, ByVal Filter, ByVal fp0)
Dim fp: fp = fp0
Dim fc2
Do ' skip over "*" and "?" characters in filter
If fp > Len(Filter) Then CompareFileName2 = True: Exit Function
fc2 = Mid(Filter,fp,1): fp = fp + 1
If fc2 <> "*" And fc2 <> "?" Then Exit Do
Loop
If fc2 = "." Then
If Mid(Filter,fp) = "*" Then ' special case: ".*" at end of filter
CompareFileName2 = True: Exit Function
End If
If fp > Len(Filter) Then ' special case: "." at end of filter
CompareFileName2 = InStr(np0,Name,".") = 0: Exit Function
End If
End If
Dim np
For np = np0 To Len(Name)
Dim nc: nc = Mid(Name,np,1)
If StrComp(fc2,nc,vbTextCompare)=0 Then
If CompareFileName(Mid(Name,np+1),Mid(Filter,fp)) Then
CompareFileName2 = True: Exit Function
End If
End If
Next
CompareFileName2 = False
End Function

最佳答案

我同意 Nathan Rice 的观点,这不是 VBScript 问题。您需要检索命令行在执行 cmd 时转储的错误。

所以尝试重写这个:

StrCMDLine = "cmd /c C: & CD %windir% & C:\ProgramData\WebEx\WebEx\500\nbrplay.exe -Convert " + """" + FileName + """" + " & exit"

为此:

dim timelog : timelog = replace(replace(formatdatetime(Now, 3), ":", "-"), " ", "-")
StrCMDLine = "cmd /c C: & CD %windir% & C:\ProgramData\WebEx\WebEx\500\nbrplay.exe -Convert " + """" + FileName + """" + " > C:\dumplog-" + timelog + ".txt & exit"

这将允许您每次检索命令日志文件并找到命令提示符报告的错误。

关于video - VBScript 中的转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21466880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com