我知道这样的问题遍布互联网,但我相信我的情况不同,我有一个 ASP.NET 网页 (Razor C#),我已经准备好一个完整的视频共享网站但我仍然不明白,如何在上传页面上使用 ffmpeg 将视频转换为 mp4 和 webm,而不是将原始文件保存并添加到我想要的数据库中添加了转换后的版本。这是我的上传页面代码:
@{
WebSecurity.RequireAuthenticatedUser();
var db = Database.Open("PhotoGallery");
var fileName = "";
var uploader = WebSecurity.CurrentUserId;
var date = DateTime.Now.Date;
var extention = "";
if(IsPost){
var numFiles = Request.Files.Count;
if(numFiles <= 0){
ModelState.AddError("fileUpload", "Please specify at least one photo to upload.");
}
else{
var fileSavePath = "";
var uploadedFile = Request.Files[0];
fileName = Path.GetFileNameWithoutExtension(uploadedFile.FileName).Trim();
extention = Path.GetExtension(uploadedFile.FileName).Trim();
string ndom = Path.GetRandomFileName();
var none = ndom.Remove(ndom.Length - 4);
fileSavePath = Server.MapPath("~/Images/userpics/" +
none + extention);
uploadedFile.SaveAs(fileSavePath);
var insertCommand = "INSERT INTO Videos (FileTitle, UploadDate, UserId, ext, Name) Values(@0, @1, @2, @3, @4)";
db.Execute(insertCommand, fileName, date, uploader, extention, none + extention);
Response.Redirect(Href("~/Photo/View", db.GetLastInsertId()));
}
}
}
<h1>Upload Video</h1>
<form method="post" enctype="multipart/form-data">
@Html.ValidationSummary("Unable to upload:")
<fieldset class="no-legend">
<legend>Upload Photo</legend>
@FileUpload.GetHtml(addText: "Add more files", uploadText: "Upload", includeFormTag: false)
<p class="form-actions">
<input type="submit" value="Upload" title="Upload photo" />
</p>
</fieldset>
</form>
<p class="message info">
The maximum file size is 50MB.
</p>
最佳答案
我认为您最好的选择是按原样进行上传,并让离线应用程序或服务轮询您的表以获取新记录,然后对其进行转换。完成后,它将使用新文件名和一个指示它已转换的标志更新表。
我有一个类似的项目,这就是我所做的。
尝试即时转换这些可能不是一个好主意。如果您同时进行大量的上传/转换,您最终可能会破坏您的服务器。
关于c# - 在 asp.net razor 中使用 ffmpeg (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23159138/