private void FixContainer(VideoListItem item)
{
SetStatus(item, VideoListItemStatusEnum.Converting);
string SrcFile = Settings.NaturalGroundingFolder + item.FileName;
if (item.FileName != null && File.Exists(SrcFile))
{
FFmpegProcess FileInfo = MediaInfo.GetFileInfo(SrcFile);
string Ext1 = Path.GetExtension(item.FileName).ToLower();
string Ext2 = DownloadBusiness.GetFinalExtension(FileInfo.VideoStream?.Format, FileInfo.AudioStream?.Format);
if ((Ext2 == ".mp4" || Ext2 == ".webm") && Ext1 != Ext2)
{
string DstFile = item.FileName.Substring(0, item.FileName.Length - Ext1.Length) + Ext2;
if (MediaMuxer.Muxe(SrcFile, SrcFile, Settings.NaturalGroundingFolder + DstFile) == CompletionStatus.Success)
{
FileOperationAPIWrapper.MoveToRecycleBin(SrcFile);
// Change database binding.
EditVideoBusiness Business = new EditVideoBusiness();
Media ExistingData = Business.GetVideoById(item.MediaId.Value);
if (ExistingData != null)
{
// Edit video info.
ExistingData.FileName = DstFile;
Business.Save();
SetStatus(item, VideoListItemStatusEnum.Done);
return;
}
}
}
}
SetStatus(item, VideoListItemStatusEnum.Failed);
}