[.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