void ConvertFile(string file) { try { var ffMpeg = new NReco.VideoConverter.FFMpegConverter(); var ffMpegInput = new NReco.VideoConverter.FFMpegInput(file); ConvertSettings csettings = new ConvertSettings(); if (EnableResize.Checked == true) { csettings.SetVideoFrameSize((int)Xaxis.Value, (int)Yaxis.Value); } if (FormatChooser.SelectedIndex == 0) { ffMpeg.ConvertMedia(file, ffMpegInput.Format, file + "Converted.avi", Format.avi, csettings); } else if (FormatChooser.SelectedIndex == 1) { ffMpeg.ConvertMedia(file, ffMpegInput.Format, file + "Converted.mp4", Format.mp4, csettings); } else if (FormatChooser.SelectedIndex == 2) { ffMpeg.ConvertMedia(file, ffMpegInput.Format, file + "Converted.m4v", Format.m4v, csettings); } else if (FormatChooser.SelectedIndex == 3) { ffMpeg.ConvertMedia(file, ffMpegInput.Format, file + "Converted.gif", Format.gif, csettings); } else if (FormatChooser.SelectedIndex == 4) { ffMpeg.ConvertMedia(file, ffMpegInput.Format, file + "Converted.mov", Format.mov, csettings); } else if (FormatChooser.SelectedIndex == 5) { ffMpeg.ConvertMedia(file, ffMpegInput.Format, file + "Converted.wmv", Format.wmv, csettings); } else if (FormatChooser.SelectedIndex == 6) { ffMpeg.ConvertMedia(file, ffMpegInput.Format, file + "Converted.swf", Format.swf, csettings); } else if (FormatChooser.SelectedIndex == 7) { ffMpeg.ConvertMedia(file, ffMpegInput.Format, file + "Converted.ogg", Format.ogg, csettings); } else if (FormatChooser.SelectedIndex == 8) { ffMpeg.ConvertMedia(file, ffMpegInput.Format, file + "Converted.mpeg", Format.mpeg, csettings); } else //Nothing selected? Default to .avi format. { ffMpeg.ConvertMedia(file, ffMpegInput.Format, file + "Converted.avi", ffMpegInput.Format, csettings); } } catch (Exception e) { MessageBox.Show("Exception error has occured:\n" + e.Message.ToString(), Title); } }
public FFMPEGConvert() { ffMpeg = new FFMpegConverter(); ffMpegSettings = new ConvertSettings(); ffMpegSettings.SetVideoFrameSize(880, 880); ffMpegSettings.VideoCodec = "h264"; ffMpegSettings.CustomOutputArgs = "-map 0:v -color_range 1 -preset fast -tune animation -profile:v high -vf \"format=yuv420p, setdar=4:3\""; ffMpegSettings.VideoFrameRate = 30; //ffMpegSettings.CustomOutputArgs = "-c:v libx264rgb -preset veryslow -tune ssim -s 680x680 -vf setdar=1:1 -pix_fmt bgr0 -r 25"; }
public async Task <ActionResult> Upload(CreatePostViewModel viewModel) { var success = false; if (ModelState.IsValid) { var countOfAttachments = 0; var contentTypeArray = new string[] { "video/mp4" //"video/avi", //"application/x-mpegURL", //"video/MP2T", //"video/3gpp", //"video/quicktime", //"video/x-msvideo", //"video/x-ms-wmv" }; //create new post entity var post = new Post { PlateNumber = viewModel.PlateNumber, Description = HttpUtility.HtmlDecode(viewModel.Description), UserID = User.Identity.GetUserId(), DateUploaded = viewModel.DateUploaded, BranchID = CurrentUser.BranchID }; // I removed the foreach loop // and use this instead since the posted file will always be one // and for performance reason var item = viewModel.Attachments.FirstOrDefault(); //check if the item is null //or else throw an error if (item != null) { //check if the content type is an MP4 if (!contentTypeArray.Contains(item.ContentType)) { ModelState.AddModelError("", "video file must be an mp4 format"); return(Json(new { success = success, message = "Video file must be an mp4 format" })); } //increment the count of attachment countOfAttachments++; //get the fileName extension var videoExt = Path.GetExtension(item.FileName); //get the fileName var videoFileName = Path.GetFileName(item.FileName); //set the video path var videoPath = Server.MapPath("~/Uploads/Videos"); //set the thumbnail path var thumbnailPath = Server.MapPath("~/Uploads/Thumbnails"); //create new entity for each attachment var attachment = new PostAttachment(); attachment.PostAttachmentID = Guid.NewGuid().ToString(); attachment.FileName = attachment.PostAttachmentID + videoExt; attachment.MIMEType = item.ContentType; attachment.FileSize = item.ContentLength; attachment.FileUrl = Path.Combine(videoPath, attachment.FileName); attachment.DateCreated = viewModel.DateUploaded; attachment.AttachmentNo = $"Attachment {countOfAttachments.ToString()}"; attachment.ThumbnailFileName = attachment.PostAttachmentID + ".jpeg"; attachment.ThumbnailUrl = Path.Combine(thumbnailPath, attachment.ThumbnailFileName); //concatenate the path and the filename var videoToSaveBeforeConvertingPath = Path.Combine(videoPath, videoFileName); //save the video using (var fileStream = System.IO.File.Create(videoToSaveBeforeConvertingPath)) { var stream = item.InputStream; stream.CopyTo(fileStream); } //for conversion var ffMpeg = new FFMpegConverter(); //Set the path of the exe of FFMpeg ffMpeg.FFMpegToolPath = videoPath; //create a file instance var file = new FileInfo(videoToSaveBeforeConvertingPath); //check if the file exists after saving the video if (file.Exists) { //codec for mp4 var convertSettings = new ConvertSettings { AudioCodec = "aac", VideoCodec = "h264" }; //set the resolution convertSettings.SetVideoFrameSize(1280, 720); //convert the saved file //attachment.FileUrl is the new output filename ffMpeg.ConvertMedia(videoToSaveBeforeConvertingPath, Format.mp4, attachment.FileUrl, Format.mp4, convertSettings); //get the thumbnail of the video for ffMpeg.GetVideoThumbnail(attachment.FileUrl, attachment.ThumbnailUrl); //Once the conversion is successful delete the original file file.Delete(); //add the attachment to post entity post.Attachments.Add(attachment); } } //find the first attachment var attached = post.Attachments.FirstOrDefault(); //if the attachment is not null save it else throw an error if (attached != null) { //add the post entity and save _uow.Posts.Add(post); await _uow.SaveChangesAsync(); //fetch the end-users who have approval access var claims = await _uow.UserClaims.GetAllByClaimTypeAndValueAsync("Approval", "CanApproveVideo"); if (claims.Count > 0) { StringBuilder recipients = new StringBuilder(); //loop through and create a semicolon separated values //to be used in sending email notification to the supervisors claims.ForEach(claim => { recipients.Append(claim.User.Email) .Append(";"); }); //get the url of the posted video //to be included in the email var url = Request.Url.Scheme + "://" + Request.Url.Authority + Url.Action("post", new { year = post.DateUploaded.Year, month = post.DateUploaded.Month, postID = post.PostID, plateNo = post.PlateNumber }); //send email try { await _mgr.CustomSendEmailAsync( User.Identity.GetUserId(), "New posted video", EmailTemplate.GetTemplate( CurrentUser, "Supervisors", "I have posted a new video. Please see the details for approval.", url), recipients.ToString()); } catch (SmtpException ex) { _uow.AppLogs.Add(new AppLog { Message = ex.Message, Type = ex.GetType().Name, Url = Request.Url.ToString(), Source = (ex.InnerException != null) ? ex.InnerException.Message : string.Empty, UserName = User.Identity.Name, LogDate = DateTime.UtcNow }); await _uow.SaveChangesAsync(); success = true; return(Json(new { success = success, message = "Uploaded successfully" })); } } success = true; return(Json(new { success = success, message = "Uploaded successfully" })); } ModelState.AddModelError("", "Attached has not been succesfully uploaded"); } return(Json(new { success = success, message = "Something went wrong. Please try again" })); }
void ConvertFileWithWatermarkOnly(string file) { try { using (var srcImage = Image.FromFile(WatermarkFileChooser.FileName)) { var newWidth = (int)(WatermarkXsize.Value); var newHeight = (int)(WatermarkYsize.Value); using (var newImage = new Bitmap(newWidth, newHeight)) using (var graphics = Graphics.FromImage(newImage)) { graphics.SmoothingMode = SmoothingMode.AntiAlias; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; graphics.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight)); newImage.Save(@"Resized.png", System.Drawing.Imaging.ImageFormat.Png); newImage.Dispose(); } srcImage.Dispose(); } } catch (Exception e) { MessageBox.Show("Exception error has occured:\n" + e.Message.ToString(), Title); } try { var ffMpeg = new NReco.VideoConverter.FFMpegConverter(); NReco.VideoConverter.FFMpegInput[] ffMpegInputs = new NReco.VideoConverter.FFMpegInput[] { new FFMpegInput(file), new FFMpegInput(@"Resized.png") }; ConvertSettings csettings = new ConvertSettings(); if (ResizeOptions.Enabled == true) { csettings.SetVideoFrameSize((int)Xaxis.Value, (int)Yaxis.Value); } csettings.AudioCodec = "copy"; string arguement = "-filter_complex \"overlay=" + logoxaxis.Value.ToString() + ":" + logoyaxis.Value.ToString() + "\""; csettings.CustomOutputArgs = arguement; if (FormatChooser.SelectedIndex == 0) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.avi", Format.avi, csettings); } else if (FormatChooser.SelectedIndex == 1) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.mp4", Format.mp4, csettings); } else if (FormatChooser.SelectedIndex == 2) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.mv4", Format.m4v, csettings); } else if (FormatChooser.SelectedIndex == 3) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.gif", Format.gif, csettings); } else if (FormatChooser.SelectedIndex == 4) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.mov", Format.mov, csettings); } else if (FormatChooser.SelectedIndex == 5) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.wmv", Format.wmv, csettings); } else if (FormatChooser.SelectedIndex == 6) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.swf", Format.swf, csettings); } else if (FormatChooser.SelectedIndex == 7) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.ogg", Format.ogg, csettings); } else if (FormatChooser.SelectedIndex == 8) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.mpeg", Format.mpeg, csettings); } else //Nothing selected? Default to .avi format. { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.avi", Format.avi, csettings); } } catch (Exception e) { MessageBox.Show("Exception error has occured:\n" + e.Message.ToString(), Title); } }
void ConvertFileWithTextOverlayOnly(string file) { try { Font textBrush = new Font(textfont.SelectedItem.ToString(), (int)fontSize.Value); //first, create a dummy bitmap just to get a graphics object Image img = new Bitmap(1, 1); Graphics drawing = Graphics.FromImage(img); //measure the string to see how big the image needs to be SizeF textSize = drawing.MeasureString(OverlayText.Text.ToString(), textBrush); //free up the dummy image and old graphics object img.Dispose(); drawing.Dispose(); //create a new image of the right size img = new Bitmap((int)textSize.Width, (int)textSize.Height); drawing = Graphics.FromImage(img); //paint the background drawing.Clear(Color.Transparent); string colorName = textColour.SelectedItem.ToString(); int Transparency = TransparencySlider.Value; Color newColor = Color.FromArgb(Transparency, Color.FromName(colorName)); SolidBrush brush = new SolidBrush(newColor); drawing.DrawString(OverlayText.Text.ToString(), textBrush, brush, 0, 0); drawing.Save(); img.Save(@"text.png", System.Drawing.Imaging.ImageFormat.Png); textBrush.Dispose(); drawing.Dispose(); img.Dispose(); brush.Dispose(); } catch (Exception e) { MessageBox.Show("Exception error has occured:\n" + e.Message.ToString(), Title); } try { var ffMpeg = new NReco.VideoConverter.FFMpegConverter(); NReco.VideoConverter.FFMpegInput[] ffMpegInputs = new NReco.VideoConverter.FFMpegInput[] { new FFMpegInput(file), new FFMpegInput(@"text.png") }; ConvertSettings csettings = new ConvertSettings(); if (ResizeOptions.Enabled == true) { csettings.SetVideoFrameSize((int)Xaxis.Value, (int)Yaxis.Value); } csettings.AudioCodec = "copy"; string arguement = "-filter_complex \"overlay=" + textxaxis.Value.ToString() + ":" + textyaxis.Value.ToString() + "\""; csettings.CustomOutputArgs = arguement; if (FormatChooser.SelectedIndex == 0) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.avi", Format.avi, csettings); } else if (FormatChooser.SelectedIndex == 1) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.mp4", Format.mp4, csettings); } else if (FormatChooser.SelectedIndex == 2) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.mv4", Format.m4v, csettings); } else if (FormatChooser.SelectedIndex == 3) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.gif", Format.gif, csettings); } else if (FormatChooser.SelectedIndex == 4) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.mov", Format.mov, csettings); } else if (FormatChooser.SelectedIndex == 5) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.wmv", Format.wmv, csettings); } else if (FormatChooser.SelectedIndex == 6) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.swf", Format.swf, csettings); } else if (FormatChooser.SelectedIndex == 7) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.ogg", Format.ogg, csettings); } else if (FormatChooser.SelectedIndex == 8) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.mpeg", Format.mpeg, csettings); } else //Nothing selected? Default to .avi format. { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.avi", Format.avi, csettings); } } catch (Exception e) { MessageBox.Show("Exception error has occured:\n" + e.Message.ToString(), Title); } }
void ConvertFileWithTextandWatermark(string file) { try { Font textBrush = new Font(textfont.SelectedItem.ToString(), (int)fontSize.Value); //first, create a dummy bitmap just to get a graphics object Image img = new Bitmap(1, 1); Graphics drawing = Graphics.FromImage(img); //measure the string to see how big the image needs to be SizeF textSize = drawing.MeasureString(OverlayText.Text.ToString(), textBrush); //free up the dummy image and old graphics object img.Dispose(); drawing.Dispose(); //create a new image of the right size img = new Bitmap((int)textSize.Width, (int)textSize.Height); drawing = Graphics.FromImage(img); //paint the background drawing.Clear(Color.Transparent); string colorName = textColour.SelectedItem.ToString(); int Transparency = TransparencySlider.Value; Color newColor = Color.FromArgb(Transparency, Color.FromName(colorName)); SolidBrush brush = new SolidBrush(newColor); drawing.DrawString(OverlayText.Text.ToString(), textBrush, brush, 0, 0); drawing.Save(); img.Save(@"text.png", System.Drawing.Imaging.ImageFormat.Png); img.Dispose(); textBrush.Dispose(); drawing.Dispose(); brush.Dispose(); } catch (Exception e) { MessageBox.Show("Exception error has occured:\n" + e.Message.ToString(), Title); } try { using (var srcImage = Image.FromFile(WatermarkFileChooser.FileName)) { var newWidth = (int)(WatermarkXsize.Value); var newHeight = (int)(WatermarkYsize.Value); using (var newImage = new Bitmap(newWidth, newHeight)) using (var graphics = Graphics.FromImage(newImage)) { graphics.SmoothingMode = SmoothingMode.AntiAlias; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; graphics.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight)); newImage.Save(@"Resized.png", System.Drawing.Imaging.ImageFormat.Png); newImage.Dispose(); } srcImage.Dispose(); } } catch (Exception e) { MessageBox.Show("Exception error has occured:\n" + e.Message.ToString(), Title); } try { var ffMpeg = new NReco.VideoConverter.FFMpegConverter(); NReco.VideoConverter.FFMpegInput[] ffMpegInputs = new NReco.VideoConverter.FFMpegInput[] { new FFMpegInput(file), new FFMpegInput(@"Resized.png"), new FFMpegInput(@"text.png") }; ConvertSettings csettings = new ConvertSettings(); if (ResizeOptions.Enabled == true) { csettings.SetVideoFrameSize((int)Xaxis.Value, (int)Yaxis.Value); } csettings.AudioCodec = "copy"; //ffmpeg - i input - i logo1 - i logo2 - filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output string arguement = "-filter_complex \"overlay=" + logoxaxis.Value.ToString() + ":" + logoyaxis.Value.ToString() + ",overlay=" + textxaxis.Value.ToString() + ":" + textyaxis.Value.ToString() + "\""; csettings.CustomOutputArgs = arguement; if (FormatChooser.SelectedIndex == 0) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.avi", Format.avi, csettings); } else if (FormatChooser.SelectedIndex == 1) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.mp4", Format.mp4, csettings); } else if (FormatChooser.SelectedIndex == 2) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.mv4", Format.m4v, csettings); } else if (FormatChooser.SelectedIndex == 3) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.gif", Format.gif, csettings); } else if (FormatChooser.SelectedIndex == 4) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.mov", Format.mov, csettings); } else if (FormatChooser.SelectedIndex == 5) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.wmv", Format.wmv, csettings); } else if (FormatChooser.SelectedIndex == 6) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.swf", Format.swf, csettings); } else if (FormatChooser.SelectedIndex == 7) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.ogg", Format.ogg, csettings); } else if (FormatChooser.SelectedIndex == 8) { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.mpeg", Format.mpeg, csettings); } else //Nothing selected? Default to .avi format. { ffMpeg.ConvertMedia(ffMpegInputs, file + "ConvertedWithWatermark.avi", Format.avi, csettings); } } catch (Exception e) { MessageBox.Show("Exception error has occured:\n" + e.Message.ToString(), Title); } }