Merge pull request #2214 from MediaBrowser/dev

Dev
This commit is contained in:
Luke 2016-10-07 11:53:34 -04:00 committed by GitHub
commit c45156c7bc
3 changed files with 8 additions and 43 deletions

View File

@ -19,6 +19,7 @@ using System.Threading.Tasks;
using CommonIO; using CommonIO;
using MediaBrowser.Api.Playback.Progressive; using MediaBrowser.Api.Playback.Progressive;
using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Configuration;
using MediaBrowser.Server.Implementations.LiveTv.EmbyTV;
namespace MediaBrowser.Api.LiveTv namespace MediaBrowser.Api.LiveTv
{ {
@ -674,8 +675,6 @@ namespace MediaBrowser.Api.LiveTv
{ {
public string Id { get; set; } public string Id { get; set; }
public string Container { get; set; } public string Container { get; set; }
public long T { get; set; }
public long S { get; set; }
} }
public class LiveTvService : BaseApiService public class LiveTvService : BaseApiService
@ -699,45 +698,18 @@ namespace MediaBrowser.Api.LiveTv
_fileSystem = fileSystem; _fileSystem = fileSystem;
} }
public object Get(GetLiveStreamFile request) public async Task<object> Get(GetLiveStreamFile request)
{ {
var filePath = Path.Combine(_config.ApplicationPaths.TranscodingTempPath, request.Id + ".ts"); var directStreamProvider = (await EmbyTV.Current.GetLiveStream(request.Id).ConfigureAwait(false)) as IDirectStreamProvider;
var outputHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); var outputHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
outputHeaders["Content-Type"] = MediaBrowser.Model.Net.MimeTypes.GetMimeType(filePath); // TODO: Don't hardcode this
outputHeaders["Content-Type"] = Model.Net.MimeTypes.GetMimeType("file.ts");
long startPosition = 0; var streamSource = new ProgressiveFileCopier(directStreamProvider, outputHeaders, null, Logger, CancellationToken.None)
if (request.T > 0)
{ {
var now = DateTime.UtcNow; AllowEndOfFile = false
var totalTicks = now.Ticks - request.S;
if (totalTicks > 0)
{
double requestedOffset = request.T;
requestedOffset = Math.Max(0, requestedOffset - TimeSpan.FromSeconds(10).Ticks);
var pct = requestedOffset / totalTicks;
Logger.Info("Live stream offset pct {0}", pct);
var bytes = new FileInfo(filePath).Length;
Logger.Info("Live stream total bytes {0}", bytes);
startPosition = Convert.ToInt64(pct * bytes);
}
}
Logger.Info("Live stream starting byte position {0}", startPosition);
var streamSource = new ProgressiveFileCopier(_fileSystem, filePath, outputHeaders, null, Logger, CancellationToken.None)
{
AllowEndOfFile = false,
StartPosition = startPosition
}; };
return ResultFactory.GetAsyncStreamWriter(streamSource); return ResultFactory.GetAsyncStreamWriter(streamSource);
} }

View File

@ -114,7 +114,7 @@ namespace MediaBrowser.Api
config.EnableLocalizedGuids = true; config.EnableLocalizedGuids = true;
config.EnableStandaloneMusicKeys = true; config.EnableStandaloneMusicKeys = true;
config.EnableCaseSensitiveItemIds = true; config.EnableCaseSensitiveItemIds = true;
//config.EnableFolderView = true; config.EnableFolderView = true;
config.SchemaVersion = 109; config.SchemaVersion = 109;
config.EnableSimpleArtistDetection = true; config.EnableSimpleArtistDetection = true;
} }

View File

@ -2534,13 +2534,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv
}; };
} }
class LiveStreamData
{
internal MediaSourceInfo Info;
internal string ItemId;
internal bool IsChannel;
}
public async Task CloseLiveStream(string id) public async Task CloseLiveStream(string id)
{ {
var parts = id.Split(new[] { '_' }, 2); var parts = id.Split(new[] { '_' }, 2);