A simple VideoViewer

This commit is contained in:
Paddy Xu
2017-05-08 00:57:03 +03:00
parent 43ba30f4d0
commit 719d2772bf
12 changed files with 3045 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
using System;
using System.IO;
using System.Linq;
using System.Windows;
using Unosquare.FFmpegMediaElement;
namespace QuickLook.Plugin.VideoViewer
{
public class PluginInterface : IViewer
{
private ViewerPanel _vp;
public int Priority => int.MaxValue;
public bool CanHandle(string path)
{
if (Directory.Exists(path))
return false;
var formats = new[]
{
".3g2", ".3gp", ".3gp2", ".3gpp", ".amv", ".asf", ".asf", ".avi", ".flv", ".m2ts", ".m4v", ".mkv",
".mov", ".mp4", ".mp4v", ".mpeg", ".mpg", ".ogv", ".qt", ".vob", ".webm", ".wmv"
};
if (formats.Contains(Path.GetExtension(path).ToLower()))
return true;
return false;
}
public void Prepare(string path, ContextObject context)
{
using (var element = new MediaElement {Source = new Uri(path)})
{
context.SetPreferredSizeFit(new Size(element.NaturalVideoWidth, element.NaturalVideoHeight), 0.6);
}
}
public void View(string path, ContextObject context)
{
_vp = new ViewerPanel();
context.ViewerContent = _vp;
_vp.LoadAndPlay(path);
context.Title = $"{Path.GetFileName(path)} ({TimeSpan.FromSeconds(_vp.mediaElement.NaturalDuration).ToString(@"hh\:mm\:ss")}, {_vp.mediaElement.NaturalVideoWidth} × {_vp.mediaElement.NaturalVideoHeight} )";
context.IsBusy = false;
}
public void Dispose()
{
_vp?.Dispose();
}
}
}