aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-03-27 16:55:31 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-03-27 16:55:31 -0400
commitd8cbd649176566dbdcc49e72d0fa2ddd4f25d536 (patch)
tree5925110b71b44f707c33119a2ce5262f11e783ba
parentd7a979979befd30389898138c742b57d1062e8db (diff)
fix mp4 sync encoding
-rw-r--r--MediaBrowser.Controller/Channels/ChannelMediaInfo.cs5
-rw-r--r--MediaBrowser.MediaEncoding/Encoder/VideoEncoder.cs9
-rw-r--r--MediaBrowser.Model/ApiClient/ServerCredentials.cs21
-rw-r--r--MediaBrowser.Model/ApiClient/ServerInfo.cs8
-rw-r--r--MediaBrowser.Model/Dlna/StreamInfoSorter.cs2
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs46
-rw-r--r--MediaBrowser.Server.Implementations/Sync/MediaSync.cs15
-rw-r--r--MediaBrowser.Server.Mono/Native/BaseMonoApp.cs1
-rw-r--r--Nuget/MediaBrowser.Common.Internal.nuspec4
-rw-r--r--Nuget/MediaBrowser.Common.nuspec2
-rw-r--r--Nuget/MediaBrowser.Model.Signed.nuspec2
-rw-r--r--Nuget/MediaBrowser.Server.Core.nuspec4
-rw-r--r--SharedVersion.cs4
13 files changed, 82 insertions, 41 deletions
diff --git a/MediaBrowser.Controller/Channels/ChannelMediaInfo.cs b/MediaBrowser.Controller/Channels/ChannelMediaInfo.cs
index 94fa1ac02..1672b75fa 100644
--- a/MediaBrowser.Controller/Channels/ChannelMediaInfo.cs
+++ b/MediaBrowser.Controller/Channels/ChannelMediaInfo.cs
@@ -38,6 +38,7 @@ namespace MediaBrowser.Controller.Channels
public string Id { get; set; }
public bool ReadAtNativeFramerate { get; set; }
+ public bool SupportsDirectPlay { get; set; }
public ChannelMediaInfo()
{
@@ -45,6 +46,7 @@ namespace MediaBrowser.Controller.Channels
// This is most common
Protocol = MediaProtocol.Http;
+ SupportsDirectPlay = true;
}
public MediaSourceInfo ToMediaSource()
@@ -63,7 +65,8 @@ namespace MediaBrowser.Controller.Channels
Name = id,
Id = id,
ReadAtNativeFramerate = ReadAtNativeFramerate,
- SupportsDirectStream = Protocol == MediaProtocol.File || Protocol == MediaProtocol.Http
+ SupportsDirectStream = Protocol == MediaProtocol.File || Protocol == MediaProtocol.Http,
+ SupportsDirectPlay = SupportsDirectPlay
};
var bitrate = (AudioBitrate ?? 0) + (VideoBitrate ?? 0);
diff --git a/MediaBrowser.MediaEncoding/Encoder/VideoEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/VideoEncoder.cs
index a714b160e..b8ed97b1f 100644
--- a/MediaBrowser.MediaEncoding/Encoder/VideoEncoder.cs
+++ b/MediaBrowser.MediaEncoding/Encoder/VideoEncoder.cs
@@ -73,10 +73,13 @@ namespace MediaBrowser.MediaEncoding.Encoder
args;
}
- var keyFrameArg = string.Format(" -force_key_frames expr:gte(t,n_forced*{0})",
- 5.ToString(UsCulture));
+ if (state.Options.Context == EncodingContext.Streaming)
+ {
+ var keyFrameArg = string.Format(" -force_key_frames expr:gte(t,n_forced*{0})",
+ 5.ToString(UsCulture));
- args += keyFrameArg;
+ args += keyFrameArg;
+ }
var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream;
diff --git a/MediaBrowser.Model/ApiClient/ServerCredentials.cs b/MediaBrowser.Model/ApiClient/ServerCredentials.cs
index d911f8121..6ba2a80c8 100644
--- a/MediaBrowser.Model/ApiClient/ServerCredentials.cs
+++ b/MediaBrowser.Model/ApiClient/ServerCredentials.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Model.Extensions;
using System;
using System.Collections.Generic;
-using System.Linq;
namespace MediaBrowser.Model.ApiClient
{
@@ -24,7 +23,12 @@ namespace MediaBrowser.Model.ApiClient
throw new ArgumentNullException("server");
}
- var list = Servers.ToList();
+ // Clone the existing list of servers
+ var list = new List<ServerInfo>();
+ foreach (ServerInfo serverInfo in Servers)
+ {
+ list.Add(serverInfo);
+ }
var index = FindIndex(list, server.Id);
@@ -32,8 +36,11 @@ namespace MediaBrowser.Model.ApiClient
{
var existing = list[index];
- // Merge the data
- existing.DateLastAccessed = new[] { existing.DateLastAccessed, server.DateLastAccessed }.Max();
+ // Take the most recent DateLastAccessed
+ if (server.DateLastAccessed > existing.DateLastAccessed)
+ {
+ existing.DateLastAccessed = server.DateLastAccessed;
+ }
existing.UserLinkType = server.UserLinkType;
@@ -64,7 +71,11 @@ namespace MediaBrowser.Model.ApiClient
}
if (server.WakeOnLanInfos != null && server.WakeOnLanInfos.Count > 0)
{
- existing.WakeOnLanInfos = server.WakeOnLanInfos.ToList();
+ existing.WakeOnLanInfos = new List<WakeOnLanInfo>();
+ foreach (WakeOnLanInfo info in server.WakeOnLanInfos)
+ {
+ existing.WakeOnLanInfos.Add(info);
+ }
}
if (server.LastConnectionMode.HasValue)
{
diff --git a/MediaBrowser.Model/ApiClient/ServerInfo.cs b/MediaBrowser.Model/ApiClient/ServerInfo.cs
index cc062f2f6..e1fa581d7 100644
--- a/MediaBrowser.Model/ApiClient/ServerInfo.cs
+++ b/MediaBrowser.Model/ApiClient/ServerInfo.cs
@@ -3,7 +3,6 @@ using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.System;
using System;
using System.Collections.Generic;
-using System.Linq;
namespace MediaBrowser.Model.ApiClient
{
@@ -83,7 +82,12 @@ namespace MediaBrowser.Model.ApiClient
throw new ArgumentNullException("user");
}
- var list = Users.ToList();
+ // Clone the existing list of users
+ var list = new List<ServerUserInfo>();
+ foreach (ServerUserInfo serverUserInfo in Users)
+ {
+ list.Add(serverUserInfo);
+ }
var index = FindIndex(list, user.Id);
diff --git a/MediaBrowser.Model/Dlna/StreamInfoSorter.cs b/MediaBrowser.Model/Dlna/StreamInfoSorter.cs
index 87c661548..0cccd8080 100644
--- a/MediaBrowser.Model/Dlna/StreamInfoSorter.cs
+++ b/MediaBrowser.Model/Dlna/StreamInfoSorter.cs
@@ -28,7 +28,7 @@ namespace MediaBrowser.Model.Dlna
case PlayMethod.DirectPlay:
return 0;
default:
- return 2;
+ return 1;
}
}).ThenBy(i =>
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index 2bc6cbadf..59daa4921 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -333,10 +333,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv
try
{
MediaSourceInfo info;
+ var isVideo = true;
if (isChannel)
{
var channel = GetInternalChannel(id);
+ isVideo = channel.ChannelType == ChannelType.TV;
var service = GetService(channel);
_logger.Info("Opening channel stream from {0}, external channel Id: {1}", service.Name, channel.ExternalId);
info = await service.GetChannelStream(channel.ExternalId, null, cancellationToken).ConfigureAwait(false);
@@ -344,6 +346,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
else
{
var recording = await GetInternalRecording(id, cancellationToken).ConfigureAwait(false);
+ isVideo = !string.Equals(recording.MediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase);
var service = GetService(recording);
_logger.Info("Opening recording stream from {0}, external recording Id: {1}", service.Name, recording.RecordingInfo.Id);
@@ -351,7 +354,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
}
_logger.Info("Live stream info: {0}", _jsonSerializer.SerializeToString(info));
- Sanitize(info);
+ Normalize(info, isVideo);
var data = new LiveStreamData
{
@@ -377,25 +380,40 @@ namespace MediaBrowser.Server.Implementations.LiveTv
}
}
- private void Sanitize(MediaSourceInfo mediaSource)
+ private void Normalize(MediaSourceInfo mediaSource, bool isVideo)
{
if (mediaSource.MediaStreams.Count == 0)
{
- mediaSource.MediaStreams.AddRange(new List<MediaStream>
+ if (isVideo)
{
- new MediaStream
+ mediaSource.MediaStreams.AddRange(new List<MediaStream>
{
- Type = MediaStreamType.Video,
- // Set the index to -1 because we don't know the exact index of the video stream within the container
- Index = -1
- },
- new MediaStream
+ new MediaStream
+ {
+ Type = MediaStreamType.Video,
+ // Set the index to -1 because we don't know the exact index of the video stream within the container
+ Index = -1
+ },
+ new MediaStream
+ {
+ Type = MediaStreamType.Audio,
+ // Set the index to -1 because we don't know the exact index of the audio stream within the container
+ Index = -1
+ }
+ });
+ }
+ else
+ {
+ mediaSource.MediaStreams.AddRange(new List<MediaStream>
{
- Type = MediaStreamType.Audio,
- // Set the index to -1 because we don't know the exact index of the audio stream within the container
- Index = -1
- }
- });
+ new MediaStream
+ {
+ Type = MediaStreamType.Audio,
+ // Set the index to -1 because we don't know the exact index of the audio stream within the container
+ Index = -1
+ }
+ });
+ }
}
// Clean some bad data coming from providers
diff --git a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs
index 936f1b1fe..cac0e1554 100644
--- a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs
+++ b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs
@@ -1,5 +1,4 @@
-using System.IO;
-using MediaBrowser.Common.IO;
+using MediaBrowser.Common.IO;
using MediaBrowser.Common.Progress;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Sync;
@@ -10,6 +9,7 @@ using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Sync;
using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
@@ -140,9 +140,6 @@ namespace MediaBrowser.Server.Implementations.Sync
var libraryItem = jobItem.Item;
var internalSyncJobItem = _syncManager.GetJobItem(jobItem.SyncJobItemId);
- var fileTransferProgress = new ActionableProgress<double>();
- fileTransferProgress.RegisterAction(pct => progress.Report(pct * .92));
-
var localItem = CreateLocalItem(provider, jobItem, target, libraryItem, serverId, jobItem.OriginalFileName);
await _syncManager.ReportSyncJobItemTransferBeginning(internalSyncJobItem.Id);
@@ -152,6 +149,9 @@ namespace MediaBrowser.Server.Implementations.Sync
try
{
+ var fileTransferProgress = new ActionableProgress<double>();
+ fileTransferProgress.RegisterAction(pct => progress.Report(pct * .92));
+
var sendFileResult = await SendFile(provider, internalSyncJobItem.OutputPath, localItem.LocalPath, target, fileTransferProgress, cancellationToken).ConfigureAwait(false);
if (localItem.Item.MediaSources != null)
@@ -342,7 +342,10 @@ namespace MediaBrowser.Server.Implementations.Sync
private string GetSyncJobFolderName(SyncedItem syncedItem, IServerSyncProvider provider)
{
- var name = syncedItem.SyncJobName + syncedItem.SyncJobDateCreated.ToLocalTime().ToString("g");
+ var name = syncedItem.SyncJobName + "-" + syncedItem.SyncJobDateCreated
+ .ToLocalTime()
+ .ToString("g")
+ .Replace(" ", "-");
name = GetValidFilename(provider, name);
diff --git a/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs b/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs
index 1ec0109ad..aea6d7367 100644
--- a/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs
+++ b/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs
@@ -139,7 +139,6 @@ namespace MediaBrowser.Server.Mono.Native
}
else if (string.Equals(sysName, "BSD", StringComparison.OrdinalIgnoreCase))
{
- // TODO: How to detect BSD?
info.OperatingSystem = Startup.Common.OperatingSystem.Bsd;
}
diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec
index d229302bd..dccef68ed 100644
--- a/Nuget/MediaBrowser.Common.Internal.nuspec
+++ b/Nuget/MediaBrowser.Common.Internal.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common.Internal</id>
- <version>3.0.599</version>
+ <version>3.0.600</version>
<title>MediaBrowser.Common.Internal</title>
<authors>Luke</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.599" />
+ <dependency id="MediaBrowser.Common" version="3.0.600" />
<dependency id="NLog" version="3.2.0.0" />
<dependency id="SimpleInjector" version="2.7.0" />
</dependencies>
diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec
index 65205fa25..b35ce68d6 100644
--- a/Nuget/MediaBrowser.Common.nuspec
+++ b/Nuget/MediaBrowser.Common.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common</id>
- <version>3.0.599</version>
+ <version>3.0.600</version>
<title>MediaBrowser.Common</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec
index 2e829b436..ea45fdfe1 100644
--- a/Nuget/MediaBrowser.Model.Signed.nuspec
+++ b/Nuget/MediaBrowser.Model.Signed.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Model.Signed</id>
- <version>3.0.599</version>
+ <version>3.0.600</version>
<title>MediaBrowser.Model - Signed Edition</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec
index f5d5b788b..6fc7e4639 100644
--- a/Nuget/MediaBrowser.Server.Core.nuspec
+++ b/Nuget/MediaBrowser.Server.Core.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MediaBrowser.Server.Core</id>
- <version>3.0.599</version>
+ <version>3.0.600</version>
<title>Media Browser.Server.Core</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains core components required to build plugins for Media Browser Server.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.599" />
+ <dependency id="MediaBrowser.Common" version="3.0.600" />
</dependencies>
</metadata>
<files>
diff --git a/SharedVersion.cs b/SharedVersion.cs
index fa4ca1ac7..621b97a63 100644
--- a/SharedVersion.cs
+++ b/SharedVersion.cs
@@ -1,4 +1,4 @@
using System.Reflection;
-[assembly: AssemblyVersion("3.0.*")]
-//[assembly: AssemblyVersion("3.0.5557.20000")]
+//[assembly: AssemblyVersion("3.0.*")]
+[assembly: AssemblyVersion("3.0.5557.30000")]