public static async void VideoConvert(StorageFile file,MediaEncodingProfile mediaProfile,VideoItem caller) { try { var outFolder = await Settings.GetOutputFolder(); StorageFile audioFile; if (Settings.GetBoolSettingValueForKey(Settings.PossibleSettingsBool.SETTING_AUTO_RENAME) && caller.tagTitle != "") audioFile = await outFolder.CreateFileAsync(caller.tagTitle+"."+mediaProfile.Container.Subtype.ToLower(), CreationCollisionOption.ReplaceExisting); else audioFile = await outFolder.CreateFileAsync(file.Name.Replace("mp4", mediaProfile.Container.Subtype.ToLower()), CreationCollisionOption.ReplaceExisting); MediaTranscoder transcoder = new MediaTranscoder(); if (caller.trimEnd != null) transcoder.TrimStartTime = new TimeSpan(0, 0, 0, (int)caller.trimStart, 0); if (caller.trimEnd != null) transcoder.TrimStopTime = new TimeSpan(0, 0, 0, (int)caller.trimEnd, 0); var result = await transcoder.PrepareFileTranscodeAsync(file, audioFile, mediaProfile); if(result.CanTranscode) { var transcodeOp = result.TranscodeAsync(); transcodeOp.Progress += async (IAsyncActionWithProgress<double> asyncInfo, double percent) => { await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { caller.SetConvProgress((int)percent); }); }; transcodeOp.Completed += (IAsyncActionWithProgress<double> asyncInfo, AsyncStatus status) => { QueueManager.Instance.ConvCompleted(caller.id); Utils.TryToRemoveFile(5, file); TagProcessing.SetTagsSharp(new TagsPackage(caller.tagArtist, caller.tagAlbum, caller.tagTitle,caller.AlbumCoverPath), audioFile); }; } } catch (Exception exc) { Debug.WriteLine("Conversion : " + exc.Message); } }
public void BeginVideoPreview(Uri uri, VideoItem caller,ImageSource src = null) { Preview.Source = uri; Preview.Play(); _currentlyPreviewedItem = caller; PreviewInfo.Visibility = Visibility.Visible; if (src != null) { PreviewThumb.Visibility = Visibility.Visible; PreviewTitle.Visibility = Visibility.Visible; PreviewThumb.Source = src; PreviewTitle.Text = caller.title; } else { PreviewThumb.Visibility = Visibility.Collapsed; PreviewTitle.Visibility = Visibility.Collapsed; } SetBestMarginForContent(); }
internal static void DetailsPopulate(VideoItem videoItem) { var page = GetMainPageInstance(); var dlPage = page.GetDownloaderPage(); dlPage.DetailsPopulate(videoItem); }
public void QueueNewItem(VideoItem item) { queuedItems.Add(item); CheckQueue(); }
public void ForceDownload(VideoItem item) { item.StartDownload(null, null); downloadingItems.Add(item); }
public void QueueNewItemConv(VideoItem item) { if (!item.requiresConv) // it's already mp4 return; queuedItemsConv.Add(item); CheckQueueConv(); }
private void VideoPreviewCancel(object sender, RoutedEventArgs e) { Preview.Stop(); _currentlyPreviewedItem = null; PreviewInfo.Visibility = Visibility.Collapsed; SetBestMarginForContent(); }
public static async void VideoConvert(string fileName,MediaEncodingProfile mediaProfile,VideoItem caller) { var outFolder = await Settings.GetOutputFolder(); StorageFile file = await outFolder.GetFileAsync(fileName); VideoConvert(file, mediaProfile,caller); }
public static async void DownloadVideo(string url, string filename, VideoItem caller) { try { HttpClientHandler aHandler = new HttpClientHandler(); aHandler.ClientCertificateOptions = ClientCertificateOption.Automatic; HttpClient aClient = new HttpClient(aHandler); aClient.DefaultRequestHeaders.ExpectContinue = false; HttpResponseMessage response = await aClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead); // Important! ResponseHeadersRead. var outputFolder = await Settings.GetOutputFolder(); var audioFile = await outputFolder.CreateFileAsync(filename + caller.sourceFileFormat, CreationCollisionOption.ReplaceExisting); var fs = await audioFile.OpenAsync(FileAccessMode.ReadWrite); Stream stream = await response.Content.ReadAsStreamAsync(); if (response.Content.Headers.ContentLength != null) { ulong totalBytes = (ulong) response.Content.Headers.ContentLength; IInputStream inputStream = stream.AsInputStream(); ulong totalBytesRead = 0; while (true) { // Read from the web. IBuffer buffer = new Buffer(1024); buffer = await inputStream.ReadAsync(buffer, buffer.Capacity, InputStreamOptions.None); if (buffer.Length == 0) break; //we're done nothing left to read... cya! // Report progress. totalBytesRead += buffer.Length; var read = totalBytesRead; await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { caller.SetProgress((int) (100*read/totalBytes)); }); // Write to file. await fs.WriteAsync(buffer); } inputStream.Dispose(); } fs.Dispose(); //Once we're done we are calling manager with info that item has been donwloaded. QueueManager.Instance.DownloadCompleted(caller.id); //And we have to queue it's conversion to different format. QueueManager.Instance.QueueNewItemConv(caller); //TODO Handle failure } catch (Exception exc) { Debug.WriteLine("DownloadVideo " + url + " " + exc.Message); } }