Пример #1
0
        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);
            }
        }
Пример #2
0
        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();
        }
Пример #3
0
 internal static void DetailsPopulate(VideoItem videoItem)
 {
     var page = GetMainPageInstance();
     var dlPage = page.GetDownloaderPage();           
     dlPage.DetailsPopulate(videoItem);
 }
Пример #4
0
 public void QueueNewItem(VideoItem item)
 {
     queuedItems.Add(item);
     CheckQueue();
 }
Пример #5
0
 public void ForceDownload(VideoItem item)
 {
     item.StartDownload(null, null);
     downloadingItems.Add(item);
 }
Пример #6
0
 public void QueueNewItemConv(VideoItem item)
 {
     if (!item.requiresConv) // it's already mp4
         return;
     queuedItemsConv.Add(item);
     CheckQueueConv();
 }
Пример #7
0
 private void VideoPreviewCancel(object sender, RoutedEventArgs e)
 {
     Preview.Stop();
     _currentlyPreviewedItem = null;
     PreviewInfo.Visibility = Visibility.Collapsed;
     SetBestMarginForContent();
 }
Пример #8
0
 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);
 }
Пример #9
0
        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);
            }
        }