aboutsummaryrefslogtreecommitdiff
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
parenta2dc5e090bac15ee2dd7c83281aa9fada1f74734 (diff)
resolve wtv transcoding
-rw-r--r--MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs12
-rw-r--r--MediaBrowser.Common/Net/MimeTypes.cs75
-rw-r--r--MediaBrowser.Controller/Connect/IConnectManager.cs1
-rw-r--r--MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs56
-rw-r--r--MediaBrowser.Server.Implementations/Connect/ConnectManager.cs19
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json3
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/server.json2
7 files changed, 104 insertions, 64 deletions
diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
index 40ec89f55..2bb706769 100644
--- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
@@ -1,5 +1,6 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO;
+using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Dlna;
@@ -60,9 +61,12 @@ namespace MediaBrowser.Api.Playback.Hls
public class DynamicHlsService : BaseHlsService
{
- public DynamicHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder)
+ protected INetworkManager NetworkManager { get; private set; }
+
+ public DynamicHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, INetworkManager networkManager)
: base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder)
{
+ NetworkManager = networkManager;
}
public object Get(GetMasterHlsVideoStream request)
@@ -480,6 +484,12 @@ namespace MediaBrowser.Api.Playback.Hls
private bool EnableAdaptiveBitrateStreaming(StreamState state)
{
+ // Within the local network this will likely do more harm than good.
+ if (Request.IsLocal || NetworkManager.IsInLocalNetwork(Request.RemoteIp))
+ {
+ return false;
+ }
+
var request = state.Request as GetMasterHlsVideoStream;
if (request != null && !request.EnableAdaptiveBitrateStreaming)
diff --git a/MediaBrowser.Common/Net/MimeTypes.cs b/MediaBrowser.Common/Net/MimeTypes.cs
index bd9668d80..1503d0b43 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";
diff --git a/MediaBrowser.Controller/Connect/IConnectManager.cs b/MediaBrowser.Controller/Connect/IConnectManager.cs
index 83f565472..2e52591f5 100644
--- a/MediaBrowser.Controller/Connect/IConnectManager.cs
+++ b/MediaBrowser.Controller/Connect/IConnectManager.cs
@@ -3,7 +3,6 @@ namespace MediaBrowser.Controller.Connect
{
public interface IConnectManager
{
- string WanIpAddress { get; }
string WanApiAddress { get; }
}
}
diff --git a/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
index 7c68448e5..9f5eade8e 100644
--- a/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
+++ b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
@@ -1,9 +1,10 @@
-using System.Globalization;
-using MediaBrowser.Common.IO;
+using MediaBrowser.Common.IO;
+using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using System;
using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
@@ -30,43 +31,6 @@ namespace MediaBrowser.Controller.Resolvers
};
- /// <summary>
- /// Any extension in this list is considered a video file - can be added to at runtime for extensibility
- /// </summary>
- public static 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);
-
private static readonly Regex MultiFileRegex = new Regex(
@"(.*?)([ _.-]*(?:cd|dvd|p(?:ar)?t|dis[ck]|d)[ _.-]*[0-9]+)(.*?)(\.[^.]+)$",
RegexOptions.Compiled | RegexOptions.IgnoreCase);
@@ -156,19 +120,7 @@ namespace MediaBrowser.Controller.Resolvers
/// <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);
+ return MimeTypes.IsVideoFile(path);
}
/// <summary>
diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs
index 8c0a14366..f1dfae934 100644
--- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs
+++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs
@@ -31,8 +31,23 @@ namespace MediaBrowser.Server.Implementations.Connect
public string ConnectServerId { get; set; }
public string ConnectAccessKey { get; set; }
- public string WanIpAddress { get; private set; }
+ public string DiscoveredWanIpAddress { get; private set; }
+ public string WanIpAddress
+ {
+ get
+ {
+ var address = _config.Configuration.WanDdns;
+
+ if (string.IsNullOrWhiteSpace(address))
+ {
+ address = DiscoveredWanIpAddress;
+ }
+
+ return address;
+ }
+ }
+
public string WanApiAddress
{
get
@@ -75,7 +90,7 @@ namespace MediaBrowser.Server.Implementations.Connect
internal void OnWanAddressResolved(string address)
{
- WanIpAddress = address;
+ DiscoveredWanIpAddress = address;
//UpdateConnectInfo();
}
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
index bdc184a37..0448e8f3f 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
@@ -445,5 +445,6 @@
"MessageTrialExpired": "The trial period for this feature has expired",
"MessageTrialWillExpireIn": "The trial period for this feature will expire in {0} day(s)",
"MessageInstallPluginFromApp": "This plugin must be installed from with in the app you intend to use it in.",
- "ValuePriceUSD": "Price: {0} (USD)"
+ "ValuePriceUSD": "Price: {0} (USD)",
+ "MessageFeatureIncludedWithSupporter": "You are registered for this feature, and will be able to continue using it with an active supporter membership."
}
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json
index 4c5953b07..59357361f 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/server.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json
@@ -1152,5 +1152,5 @@
"XmlDocumentAttributeListHelp": "These attributes are applied to the root element of every xml response.",
"OptionSaveMetadataAsHidden": "Save metadata and images as hidden files",
"LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan",
- "LabelExtractChaptersDuringLibraryScanHelp": "If enabled, chapter images will be extracted as part of the normal library scan. If disabled they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster."
+ "LabelExtractChaptersDuringLibraryScanHelp": "If enabled, chapter images will be extracted when videos are imported during the library scan. If disabled they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster."
}