public static void StartEncodingButton_OnClick(object sender, EventArgs e) { Task.Run(() => { try { if (!FileBrowser.GetExternalPermissions()) { return; } VideoEncoder.EncodeProgressBar.Progress = 0; var codec = new MediaCodecHelper .FileToMp4(Android.App.Application.Context, Convert.ToInt32(EncoderFpsEditText.Text), 1, Convert.ToInt32(VideoEncoder.EncoderWidthEditText.Text), Convert.ToInt32(VideoEncoder.EncoderHeightEditText.Text), Convert.ToInt32(VideoEncoder.EncoderBitRateEditText.Text /*int*/) * 1000 /* = kbps */); codec.Progress += OnEncoderProgress; string inputPath = ""; string outputPath = ""; var fileName = ""; Android.Net.Uri tempuri = null; if (MediaCodecHelper.FileToMp4.InputUriToEncode == null) { inputPath = ViewHelpers.VideoEncoder.EncoderSourceEditText.Text; tempuri = Android.Net.Uri.Parse(inputPath); fileName = tempuri.LastPathSegment.Split(@"/").ToList <string>().Last(); //I had to trim this because bitchute will actually completely drop files that have long names into a 404 khole outputPath = $"{MediaCodecHelper.FileToMp4.GetWorkingDirectory()}{fileName.Replace(".mp4", "")}_cp_{new System.Random().Next(0, 777)}.mp4"; } else { tempuri = MediaCodecHelper.FileToMp4.InputUriToEncode; fileName = MediaCodecHelper.FileToMp4.InputUriToEncode.LastPathSegment.Replace(":", ""); outputPath = $"{MediaCodecHelper.FileToMp4.GetWorkingDirectory()}{fileName?.Replace(".mp4", "")}_cp_{new System.Random().Next(0, 777)}.mp4"; } codec.Start(MediaCodecHelper.FileToMp4.InputUriToEncode, outputPath, inputPath); } catch (Exception ex) { Console.WriteLine(ex); } }); }