Browse Source

fix next playback of items with no audio

pull/2865/head
Jason Dove 3 months ago
parent
commit
2750ad0c54
No known key found for this signature in database
  1. 43
      ErsatzTV.Application/Playouts/Commands/SyncNextPlayoutHandler.cs

43
ErsatzTV.Application/Playouts/Commands/SyncNextPlayoutHandler.cs

@ -125,14 +125,27 @@ public partial class SyncNextPlayoutHandler( @@ -125,14 +125,27 @@ public partial class SyncNextPlayoutHandler(
.ThenInclude(i => (i as Episode).MediaVersions)
.ThenInclude(mv => mv.MediaFiles)
.Include(i => i.MediaItem)
.ThenInclude(i => (i as Episode).MediaVersions)
.ThenInclude(mv => mv.Streams)
.Include(i => i.MediaItem)
.ThenInclude(i => (i as Movie).MediaVersions)
.ThenInclude(mv => mv.MediaFiles)
.Include(i => i.MediaItem)
.ThenInclude(i => (i as Movie).MediaVersions)
.ThenInclude(mv => mv.Streams)
.Include(i => i.MediaItem)
.ThenInclude(i => (i as OtherVideo).MediaVersions)
.ThenInclude(mv => mv.MediaFiles)
.Include(i => i.MediaItem)
.ThenInclude(i => (i as OtherVideo).MediaVersions)
.ThenInclude(mv => mv.Streams)
.Include(i => i.MediaItem)
.ThenInclude(i => (i as MusicVideo).MediaVersions)
.ThenInclude(mv => mv.MediaFiles)
.Include(i => i.MediaItem)
.ThenInclude(i => (i as MusicVideo).MediaVersions)
.ThenInclude(mv => mv.Streams)
.AsSplitQuery()
.ToListAsync(cancellationToken);
logger.LogDebug("Located {Count} local playout items", playoutItems.Count);
@ -156,7 +169,8 @@ public partial class SyncNextPlayoutHandler( @@ -156,7 +169,8 @@ public partial class SyncNextPlayoutHandler(
continue;
}
string path = playoutItem.MediaItem.GetHeadVersion().MediaFiles.Head().Path;
MediaVersion headVersion = playoutItem.MediaItem.GetHeadVersion();
string path = headVersion.MediaFiles.Head().Path;
playoutItem.Start += playoutOffset;
playoutItem.Finish += playoutOffset;
@ -173,6 +187,33 @@ public partial class SyncNextPlayoutHandler( @@ -173,6 +187,33 @@ public partial class SyncNextPlayoutHandler(
}
};
// if no audio streams, use lavfi to insert silence
if (headVersion.Streams.All(s => s.MediaStreamKind is not MediaStreamKind.Audio))
{
var videoSource = nextPlayoutItem.Source;
nextPlayoutItem.Source = null;
nextPlayoutItem.Tracks = new TracksClass
{
Audio = new AudioClass
{
Source = new AudioSource
{
SourceType = SourceType.Lavfi,
Params = "anullsrc=channel_layout=stereo:sample_rate=48000"
}
},
Video = new AudioClass
{
Source = new AudioSource
{
SourceType = videoSource.SourceType,
Path = videoSource.Path,
}
}
};
}
playout.Items.Add(nextPlayoutItem);
}

Loading…
Cancel
Save