相信网上的教程时非常的多,不管使用什么语言去编写,都少不了process类的调用。
我们在之前写计时器的时候,就使用了ProgressBar控件,其中是反应倒计时的进度,把所有的秒数算出来,才可以进行倒计时
这是还在开发的计时器3.0
这里也是这样:
t = S + M * 60 + H * 3600
写之前请把基础代码写上(我几乎每一期都会写这一段!!)
Public Shared Function SharedP(s As String, Arguments As String, nowindow As Boolean)
Dim p As New Process
p.StartInfo.FileName = s
p.StartInfo.Arguments = Arguments
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardError = True
p.StartInfo.CreateNoWindow = nowindow
p.Start()
p.StandardError.ReadToEnd()
Return p.StandardError.ReadToEnd()
p.WaitForExit()
p.Kill()
p.Close()
p.Dispose()
End Function
代码:
Public Function GetImage(input As String, H As Integer, M As Integer, S As Integer) As Bitmap
Dim t As Integer
t = S + M * 60 + H * 3600
SharedP(ffmpeg, "-i " & input & " -ss " & t & " -f image2 " & Application.StartupPath & "\a.png -y", True)
Return New Bitmap(Application.StartupPath & "\a.png")
End Function
但是,这只局限于秒,我们是否可以精确到100毫秒?
来吧,写一个重载:
Public Overridable Function GetImage(input As String, H As Integer, M As Integer, S As Integer, MS As Integer) As Bitmap
SharedP(ffmpeg, "-i " & input & " -ss " & H & ":" & M & ":" & S & "." & MS & " -f image2 " & Application.StartupPath & "\a.png -y", True)
Return New Bitmap(Application.StartupPath & "\a.png")
End Function
这不比那么多代码来得简单易懂?