The player now load transmuxed videos.

This commit is contained in:
Zoe Roux 2019-11-11 22:13:47 +01:00
parent b129a2d84d
commit 4fa5a6b30f
4 changed files with 22 additions and 8 deletions

View File

@ -339,7 +339,7 @@ export class PlayerComponent implements OnInit
init() init()
{ {
var dashPlayer = MediaPlayer().create(); 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"]; let sub: string = this.route.snapshot.queryParams["sub"];
if (sub != null) if (sub != null)

View File

@ -1,6 +1,8 @@
using Kyoo.InternalAPI; using Kyoo.InternalAPI;
using Kyoo.Models; using Kyoo.Models;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using System.IO;
namespace Kyoo.Controllers namespace Kyoo.Controllers
{ {
@ -10,11 +12,13 @@ namespace Kyoo.Controllers
{ {
private readonly ILibraryManager libraryManager; private readonly ILibraryManager libraryManager;
private readonly ITranscoder transcoder; 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.libraryManager = libraryManager;
this.transcoder = transcoder; this.transcoder = transcoder;
transmuxPath = config.GetValue<string>("transmuxTempPath");
} }
[HttpGet("{showSlug}-s{seasonNumber}e{episodeNumber}")] [HttpGet("{showSlug}-s{seasonNumber}e{episodeNumber}")]
@ -28,7 +32,7 @@ namespace Kyoo.Controllers
return NotFound(); 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) public IActionResult Transmux(string showSlug, long seasonNumber, long episodeNumber)
{ {
WatchItem episode = libraryManager.GetWatchItem(showSlug, seasonNumber, episodeNumber); WatchItem episode = libraryManager.GetWatchItem(showSlug, seasonNumber, episodeNumber);
@ -45,6 +49,15 @@ namespace Kyoo.Controllers
return NotFound(); 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}")] [HttpGet("transcode/{showSlug}-s{seasonNumber}e{episodeNumber}")]
public IActionResult Transcode(string showSlug, long seasonNumber, long episodeNumber) public IActionResult Transcode(string showSlug, long seasonNumber, long episodeNumber)
{ {

View File

@ -11,11 +11,11 @@ namespace Kyoo.InternalAPI
{ {
public class Transcoder : ITranscoder public class Transcoder : ITranscoder
{ {
private readonly string tempPath; private readonly string transmuxPath;
public Transcoder(IConfiguration config) public Transcoder(IConfiguration config)
{ {
tempPath = config.GetValue<string>("tempPath"); transmuxPath = config.GetValue<string>("transmuxTempPath");
Debug.WriteLine("&Api INIT (unmanaged stream size): " + TranscoderAPI.Init() + ", Stream size: " + Marshal.SizeOf<Models.Watch.Stream>()); Debug.WriteLine("&Api INIT (unmanaged stream size): " + TranscoderAPI.Init() + ", Stream size: " + Marshal.SizeOf<Models.Watch.Stream>());
} }
@ -33,7 +33,7 @@ namespace Kyoo.InternalAPI
public string Transmux(WatchItem episode) 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"); string manifest = Path.Combine(folder, episode.Link + ".mpd");
Directory.CreateDirectory(folder); Directory.CreateDirectory(folder);
@ -48,7 +48,8 @@ namespace Kyoo.InternalAPI
public string Transcode(string path) public string Transcode(string path)
{ {
return @"D:\Videos\Anohana\AnoHana S01E01.mp4"; //NOT IMPLEMENTED YET
return null;
} }
} }
} }

View File

@ -9,7 +9,7 @@
"AllowedHosts": "*", "AllowedHosts": "*",
"databasePath": "C://Projects/database.db", "databasePath": "C://Projects/database.db",
"tempPath": "C:\\\\Projects\\temp", "transmuxTempPath": "C:\\\\Projects\\temp\\transmux",
"peoplePath": "D:\\\\Videos\\People", "peoplePath": "D:\\\\Videos\\People",
"plugins": "C:\\Projects\\Kyoo\\Debug", "plugins": "C:\\Projects\\Kyoo\\Debug",
"providerPlugins": "C://Projects/Plugins/Providers", "providerPlugins": "C://Projects/Plugins/Providers",