diff --git a/Kyoo/ClientApp/src/app/player/player.component.ts b/Kyoo/ClientApp/src/app/player/player.component.ts index 9da645b7..26feb187 100644 --- a/Kyoo/ClientApp/src/app/player/player.component.ts +++ b/Kyoo/ClientApp/src/app/player/player.component.ts @@ -339,7 +339,7 @@ export class PlayerComponent implements OnInit init() { var dashPlayer = MediaPlayer().create(); - dashPlayer.initialize(this.player, "http://localhost:5005/" + this.item.link + "/" + this.item.link + ".mpd", true); + dashPlayer.initialize(this.player, "/video/transmux/" + this.item.link + "/", true); let sub: string = this.route.snapshot.queryParams["sub"]; if (sub != null) diff --git a/Kyoo/Controllers/VideoController.cs b/Kyoo/Controllers/VideoController.cs index 63c7c282..28c69026 100644 --- a/Kyoo/Controllers/VideoController.cs +++ b/Kyoo/Controllers/VideoController.cs @@ -1,6 +1,8 @@ using Kyoo.InternalAPI; using Kyoo.Models; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; +using System.IO; namespace Kyoo.Controllers { @@ -10,11 +12,13 @@ namespace Kyoo.Controllers { private readonly ILibraryManager libraryManager; private readonly ITranscoder transcoder; + private readonly string transmuxPath; - public VideoController(ILibraryManager libraryManager, ITranscoder transcoder) + public VideoController(ILibraryManager libraryManager, ITranscoder transcoder, IConfiguration config) { this.libraryManager = libraryManager; this.transcoder = transcoder; + transmuxPath = config.GetValue("transmuxTempPath"); } [HttpGet("{showSlug}-s{seasonNumber}e{episodeNumber}")] @@ -28,7 +32,7 @@ namespace Kyoo.Controllers return NotFound(); } - [HttpGet("transmux/{showSlug}-s{seasonNumber}e{episodeNumber}")] + [HttpGet("transmux/{showSlug}-s{seasonNumber}e{episodeNumber}/")] public IActionResult Transmux(string showSlug, long seasonNumber, long episodeNumber) { WatchItem episode = libraryManager.GetWatchItem(showSlug, seasonNumber, episodeNumber); @@ -45,6 +49,15 @@ namespace Kyoo.Controllers return NotFound(); } + [HttpGet("transmux/{episodeLink}/dash/{chunk}")] + public IActionResult GetTransmuxedChunk(string episodeLink, string chunk) + { + string path = Path.Combine(transmuxPath, episodeLink); + path = Path.Combine(path, "dash" + Path.DirectorySeparatorChar + chunk); + + return PhysicalFile(path, "video/iso.segment"); + } + [HttpGet("transcode/{showSlug}-s{seasonNumber}e{episodeNumber}")] public IActionResult Transcode(string showSlug, long seasonNumber, long episodeNumber) { diff --git a/Kyoo/InternalAPI/Transcoder/Transcoder.cs b/Kyoo/InternalAPI/Transcoder/Transcoder.cs index cc68b44d..910739ee 100644 --- a/Kyoo/InternalAPI/Transcoder/Transcoder.cs +++ b/Kyoo/InternalAPI/Transcoder/Transcoder.cs @@ -11,11 +11,11 @@ namespace Kyoo.InternalAPI { public class Transcoder : ITranscoder { - private readonly string tempPath; + private readonly string transmuxPath; public Transcoder(IConfiguration config) { - tempPath = config.GetValue("tempPath"); + transmuxPath = config.GetValue("transmuxTempPath"); Debug.WriteLine("&Api INIT (unmanaged stream size): " + TranscoderAPI.Init() + ", Stream size: " + Marshal.SizeOf()); } @@ -33,7 +33,7 @@ namespace Kyoo.InternalAPI public string Transmux(WatchItem episode) { - string folder = Path.Combine(tempPath, episode.Link); + string folder = Path.Combine(transmuxPath, episode.Link); string manifest = Path.Combine(folder, episode.Link + ".mpd"); Directory.CreateDirectory(folder); @@ -48,7 +48,8 @@ namespace Kyoo.InternalAPI public string Transcode(string path) { - return @"D:\Videos\Anohana\AnoHana S01E01.mp4"; + //NOT IMPLEMENTED YET + return null; } } } diff --git a/Kyoo/appsettings.json b/Kyoo/appsettings.json index 6fb127c3..eb2882cb 100644 --- a/Kyoo/appsettings.json +++ b/Kyoo/appsettings.json @@ -9,7 +9,7 @@ "AllowedHosts": "*", "databasePath": "C://Projects/database.db", - "tempPath": "C:\\\\Projects\\temp", + "transmuxTempPath": "C:\\\\Projects\\temp\\transmux", "peoplePath": "D:\\\\Videos\\People", "plugins": "C:\\Projects\\Kyoo\\Debug", "providerPlugins": "C://Projects/Plugins/Providers",