В настоящее время я делаю приложение .NET, которое позволяет пользователю загружать аудиофайл и конвертировать его в mp3. Я использую FFmpeg. Он работает с .wav и .mp3, но приложение возвращает «соединение было сброшено» (я использую Firefox 4 для тестирования), когда я пытаюсь загрузить форматы, например .wma или .m4a. Естественно, когда я проверял ошибки, загружая неподдерживаемые файлы, такие как .jpg, он также возвращал то же самое. Аргумент командной строки работал, как и предполагалось, когда я делал это с помощью cmd.
Вот код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Diagnostics;
using System.Media;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Text.RegularExpressions;
namespace AudioConvert
{
public partial class _Default : System.Web.UI.Page
{
Process ffmpeg;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnUpload_Click(object sender, EventArgs e)
{
string audio;
string mp3;
if (FileUpload1.HasFile)
{
FileUpload1.SaveAs(@"\Temp\"+FileUpload1.FileName);
}
//FileUpload1.SaveAs(Server.MapPath("") + System.IO.Path.GetFileName(FileUpload1.FileName));
audio = @"\Temp\"+FileUpload1.FileName; //audio filepath
mp3 = Page.MapPath("") + "\\Media\\"+FileUpload1.FileName+".mp3";
ffmpeg = new Process();
try
{
ffmpeg.StartInfo.Arguments = "-y -i \"" + audio + "\" -ab 128k \"" + mp3; //-command line argument, overwrites automatically
ffmpeg.StartInfo.FileName = Page.MapPath("ffmpeg.exe"); //ffmpeg file location
ffmpeg.Start();
ffmpeg.WaitForExit();
ffmpeg.Close();
}
catch
{
}
}
}
}