mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-03-17 15:46:22 +00:00
fix mp4 sync encoding
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user