aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Net
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-09-09 20:28:59 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-09-09 20:28:59 -0400
commitb314199319c599996090282d79baddcde413a187 (patch)
tree26760a6d449ecfc7b81e9b3ca4a5cb24a6f00223 /MediaBrowser.Common/Net
parenta2dc5e090bac15ee2dd7c83281aa9fada1f74734 (diff)
resolve wtv transcoding
Diffstat (limited to 'MediaBrowser.Common/Net')
-rw-r--r--MediaBrowser.Common/Net/MimeTypes.cs75
1 files changed, 69 insertions, 6 deletions
diff --git a/MediaBrowser.Common/Net/MimeTypes.cs b/MediaBrowser.Common/Net/MimeTypes.cs
index bd9668d800..1503d0b431 100644
--- a/MediaBrowser.Common/Net/MimeTypes.cs
+++ b/MediaBrowser.Common/Net/MimeTypes.cs
@@ -1,5 +1,7 @@
using System;
+using System.Collections.Generic;
using System.IO;
+using System.Linq;
namespace MediaBrowser.Common.Net
{
@@ -14,6 +16,65 @@ namespace MediaBrowser.Common.Net
public static string JsonMimeType = "application/json";
/// <summary>
+ /// Any extension in this list is considered a video file - can be added to at runtime for extensibility
+ /// </summary>
+ private static readonly List<string> VideoFileExtensions = new List<string>
+ {
+ ".mkv",
+ ".m2t",
+ ".m2ts",
+ ".img",
+ ".iso",
+ ".mk3d",
+ ".ts",
+ ".rmvb",
+ ".mov",
+ ".avi",
+ ".mpg",
+ ".mpeg",
+ ".wmv",
+ ".mp4",
+ ".divx",
+ ".dvr-ms",
+ ".wtv",
+ ".ogm",
+ ".ogv",
+ ".asf",
+ ".m4v",
+ ".flv",
+ ".f4v",
+ ".3gp",
+ ".webm",
+ ".mts",
+ ".m2v",
+ ".rec"
+ };
+
+ private static readonly Dictionary<string, string> VideoFileExtensionsDictionary = VideoFileExtensions.ToDictionary(i => i, StringComparer.OrdinalIgnoreCase);
+
+ /// <summary>
+ /// Determines whether [is video file] [the specified path].
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <returns><c>true</c> if [is video file] [the specified path]; otherwise, <c>false</c>.</returns>
+ public static bool IsVideoFile(string path)
+ {
+ if (string.IsNullOrEmpty(path))
+ {
+ throw new ArgumentNullException("path");
+ }
+
+ var extension = Path.GetExtension(path);
+
+ if (string.IsNullOrEmpty(extension))
+ {
+ return false;
+ }
+
+ return VideoFileExtensionsDictionary.ContainsKey(extension);
+ }
+
+ /// <summary>
/// Gets the type of the MIME.
/// </summary>
/// <param name="path">The path.</param>
@@ -26,7 +87,7 @@ namespace MediaBrowser.Common.Net
{
throw new ArgumentNullException("path");
}
-
+
var ext = Path.GetExtension(path) ?? string.Empty;
// http://en.wikipedia.org/wiki/Internet_media_type
@@ -37,10 +98,6 @@ namespace MediaBrowser.Common.Net
{
return "video/mpeg";
}
- if (ext.Equals(".mp4", StringComparison.OrdinalIgnoreCase))
- {
- return "video/mp4";
- }
if (ext.Equals(".ogv", StringComparison.OrdinalIgnoreCase))
{
return "video/ogg";
@@ -90,6 +147,12 @@ namespace MediaBrowser.Common.Net
return "video/mp2t";
}
+ // Catch-all for all video types that don't require specific mime types
+ if (VideoFileExtensionsDictionary.ContainsKey(ext))
+ {
+ return "video/" + ext.TrimStart('.').ToLower();
+ }
+
// Type text
if (ext.Equals(".css", StringComparison.OrdinalIgnoreCase))
{
@@ -152,7 +215,7 @@ namespace MediaBrowser.Common.Net
return "image/vnd.microsoft.icon";
}
- // Type audio
+ // Type audio
if (ext.Equals(".mp3", StringComparison.OrdinalIgnoreCase))
{
return "audio/mpeg";