我需要将一个字符串传递给ffmpeg的ProcessStartInfo,以便我可以调用dim.Argument并让它在解析文件时附加代码中的字符串和变量。
我有movedFileInfo
代码看到的当前filename.mp3,但它不允许我使用&
运算符将其附加到字符串... help?
我知道可能还有另外一种方法可以在单独的函数中使用ffmpeg命令来简单地使用" for"来循环遍历目录。但我还没有找到一个成功的命令来运行我的ffmpeg.exe,也没有在Windows中运行ffprompt。当我写merge.txt时,我还需要附加一个回车,但是找不到一个例子......我是vba的新手。
这些命令有效,但是vba抱怨我的字符串中的&
运算符错误为The operator '&' is not defined for types 'String' and 'System.IO.FileInfo'
。
所以我理解的是,我传入psi.Arguments
的字符串并不像我发送一个字符串和使用{{1附加的变量这样的事实运算符...我只是使用逗号或如何将变量&
附加到ffmpeg -i? movedFileInfo
在上面被定义为ProcessStartInfo ...所以我不确定vb识别它的类型...我还没有找到关于ProcessStartInfo的信息来启动我的ffmpeg exe。
见下面的代码:
psi
答案 0 :(得分:2)
问题是VB中的&
运算符仅用于连接System.String
个对象。它比使用+
连接更严格。您无法使用它将String
和System.IO.FileInfo
对象连接在一起。你想要的是从FileInfo
对象获取文件名。它有一个属性FileInfo.FullName
,它将从documentation返回String
文件的完整路径。
尝试改为:
For Each foundFile As String In My.Computer.FileSystem.GetFiles(video_card_dir, Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, "*.MTS")
Dim movedFileInfo As New System.IO.FileInfo(foundFile)
psi.Arguments = "ffmpeg -i " & movedFileInfo.FullName & " -vcodec -c libx264 " & movedFileInfo.FullName & ".mp4"
psi.ToString()
proc = Process.Start(psi)
Next
如果您想将.mts
扩展名替换为.mp4
,而不是像此代码那样简单地追加.mp4
,请参阅this question。