[.NET] 请教process操作cmd使用ffmpeg

楼主: hugct (cchug)   2019-10-11 00:27:26
请输入专案类型(网站专案或者应用程式专案):网站专案
各位高手好,小弟最近打算写一个网站,
提供上传影片后由后端操作cmd由ffmpeg处理,
生成.m3u8列表可供串流使用,
但在操作cmd这段遇到了困难,
我利用process操作cmd后,输入ffmpeg指令 && exit,
然后回传cmd的窗口内容,结果只有指令被输入,
并没有被执行,请问各位高手能指点一下迷津吗?
程式码:
Dim fileName As String = "borderoflife"
Dim file As String = "borderoflife.mp4"
Dim appPath As String = "C:\allen0916\"
Dim saveDir As String = "test2\"
Dim savePath As String = appPath & saveDir
Dim saveResult As String = savePath & file
Dim Content_Type_A As String = "video/mp4"
'生成M3U8文件
Dim m3u8Path As String = Path.Combine(savePath, fileName + ".m3u8")
Dim para As String = String.Format("ffmpeg -i {0} -profile:v baseline
-level 3.0 -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls
{1} ", saveResult, m3u8Path)
Dim output As String = "none"'可以输出output查看具体报错原因
Dim p As Process = New Process()
p.StartInfo.FileName = "cmd.exe"
p.StartInfo.UseShellExecute = False '是否使用操作系统shell启动
p.StartInfo.RedirectStandardInput = True '接受来自调用程序的输入信息
p.StartInfo.RedirectStandardOutput = True '由调用程序获取输出信息
p.StartInfo.RedirectStandardError = True '重定向标准错误输出
p.StartInfo.CreateNoWindow = False '不显示程序窗口
p.Start() '启动程序
p.StandardInput.WriteLine(para) '向cmd窗口发送输入信息
p.StandardInput.WriteLine("exit")
p.StandardInput.AutoFlush = True
p.StandardInput.Close() '等待程序执行完退出进程
output = p.StandardOutput.ReadToEnd() '获取cmd窗口的输出信息
p.WaitForExit()
p.Close()
'检测是否已生成M3U8文件
If System.IO.File.Exists(m3u8Path) <> True Then
context.Response.Write(output)
Else
context.Response.Write("Success")
End If
但是结果output输出的内容只有:
Microsoft Windows [版本 10.0.17763.107]
(c) 2018 Microsoft Corporation. 著作权所有,并保留一切权利。
c:\windows\system32\inetsrv>ffmpeg -i C:\allen0916\test2\borderoflife.mp4
-profile:v baseline -level 3.0 -s 640x360 -start_number 0 -hls_time 10
-hls_list_size 0 -f hls C:\allen0916\test2\borderoflife.mp4.m3u8
c:\windows\system32\inetsrv>exit
很明显,指令没有被执行,请问各位高手能解释一下吗?谢谢。

Links booklink

Contact Us: admin [ a t ] ucptt.com