上一篇說了在winform下進行調用cmd.exe執行ffmpeg.exe進行音頻轉換完整demo.後來我又須要移植這個方式到asp.net中,可是asp.net和winform程序有不少不一樣。html
須要修改WavConvertToAmr的方法,支持asp.netc#
一、WavConvertToAmr修改執行權限:若是在windows server中可能會遇到權限問題,須要配置IIS權限:windows
先從IIS中找到你的網站,在右鍵--【屬性】中看看使用的應用程序池是哪一個,而後【在應用程序池】目錄下找到它,右鍵---【屬性】asp.net
找到【標識】選項卡,再找到【預約義帳戶】,在後邊的下拉菜單中選擇「本地系統」就能夠了!網站
這樣一來,你的網站就能夠爲所欲爲的執行cmd命令了,其實不單單是執行cmd命令,簡直是至高無上的權限!spa
提醒一下,這樣更改的是應用程序池權限,所以全部使用這個應用程序池的網站都有很高的權限,這是至關危險的,還須謹慎使用!!.net
這個方法存在危險,也經過設置執行的用戶名和密碼來設置:code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
/// <summary>
/// 執行Cmd命令
/// </summary>
private
string
Cmd(
string
c)
{
try
{
System.Diagnostics.Process process =
new
System.Diagnostics.Process();
process.StartInfo.FileName =
"cmd.exe"
;
process.StartInfo.UseShellExecute =
false
;
process.StartInfo.CreateNoWindow =
true
;
process.StartInfo.UserName =
"user"
;
//構造用戶密碼,假定密碼爲123,必須一個字符一個字符的添加
System.Security.SecureString password =
new
System.Security.SecureString();
password.AppendChar(
'p'
);
password.AppendChar(
'a'
);
password.AppendChar(
's'
);
password.AppendChar(
's'
);
process.StartInfo.Password = password;
process.StartInfo.RedirectStandardInput =
true
;
process.StartInfo.RedirectStandardOutput =
true
;
process.StartInfo.RedirectStandardError =
true
;
process.Start();
process.StandardInput.WriteLine(c);
process.StandardInput.AutoFlush =
true
;
Thread.Sleep(1000);
process.StandardInput.WriteLine(
"exit"
);
process.WaitForExit();
//StreamReader reader = process.StandardOutput;//截取輸出流
string
outStr = process.StandardOutput.ReadToEnd();
process.Close();
return
outStr;
}
catch
(Exception ex)
{
return
"error"
+ex.Message;
}
}
|
注意:構造用戶密碼,假定密碼爲123,必須一個字符一個字符的添加 !orm
二、在asp.net中調用方式:server
1
2
3
4
5
6
7
8
|
protected
void
Button1_Click(
object
sender, EventArgs e)
{
string
fileName =
"d:\\2222.amr"
;
string
targetFileName =
"d:\\2222.mp3"
;
WavConvertAmr.WavConvertToAmr toamr =
new
WavConvertAmr.WavConvertToAmr();
string
remsg = toamr.ConvertToAmr(Server.MapPath(
"./ffmpeg/"
), fileName, targetFileName);
}
|
將ffmpeg.exe放在網站的目錄ffmpeg的下面
在asp.net要注意ffmepg的路徑:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
./當前目錄
/網站主目錄
../上層目錄
~/網站虛擬目錄
若是當前的網站目錄爲E:\wwwroot 應用程序虛擬目錄爲E:\wwwroot\company 瀏覽的頁面路徑爲E:\wwwroot\company\news\show.asp
在show.asp頁面中使用
Server.MapPath(
"./"
) 返回路徑爲:E:\wwwroot\company\news
Server.MapPath(
"/"
) 返回路徑爲:E:\wwwroot
Server.MapPath(
"../"
) 返回路徑爲:E:\wwwroot\company
Server.MapPath(
"~/"
) 返回路徑爲:E:\wwwroot\company
server.MapPath(request.ServerVariables(
"Path_Info"
))
Request.ServerVariables(
"Path_Translated"
)
上面兩種方式返回路徑爲 D:\wwwroot\company\news\show.asp
|
轉載網址:
http://www. suxxxxxxxxchso.com/projecteactual/csharp-ffmpeg-demo-mp3-amr-mp4-asp.net.html