@ -126,18 +126,15 @@ public class SongVideoGenerator : ISongVideoGenerator
int leftMarginPercent = HORIZONTAL_MARGIN_PERCENT ;
int leftMarginPercent = HORIZONTAL_MARGIN_PERCENT ;
int rightMarginPercent = HORIZONTAL_MARGIN_PERCENT ;
int rightMarginPercent = HORIZONTAL_MARGIN_PERCENT ;
if ( metadata . Artwork . Any ( a = > a . ArtworkKind = = ArtworkKind . Thumbnail ) )
switch ( watermarkLocation )
{
{
switch ( watermarkLocation )
case WatermarkLocation . BottomLeft :
{
leftMarginPercent + = WATERMARK_WIDTH_PERCENT + HORIZONTAL_MARGIN_PERCENT ;
case WatermarkLocation . BottomLeft :
break ;
leftMarginPercent + = WATERMARK_WIDTH_PERCENT + HORIZONTAL_MARGIN_PERCENT ;
case WatermarkLocation . BottomRight :
break ;
leftMarginPercent = rightMarginPercent = HORIZONTAL_MARGIN_PERCENT ;
case WatermarkLocation . BottomRight :
rightMarginPercent + = WATERMARK_WIDTH_PERCENT + HORIZONTAL_MARGIN_PERCENT ;
leftMarginPercent = rightMarginPercent = HORIZONTAL_MARGIN_PERCENT ;
break ;
rightMarginPercent + = WATERMARK_WIDTH_PERCENT + HORIZONTAL_MARGIN_PERCENT ;
break ;
}
}
}
var leftMargin = ( int ) Math . Round ( leftMarginPercent / 1 0 0.0 * channel . FFmpegProfile . Resolution . Width ) ;
var leftMargin = ( int ) Math . Round ( leftMarginPercent / 1 0 0.0 * channel . FFmpegProfile . Resolution . Width ) ;
@ -161,30 +158,40 @@ public class SongVideoGenerator : ISongVideoGenerator
. BuildFile ( ) ;
. BuildFile ( ) ;
// use thumbnail (cover art) if present
// use thumbnail (cover art) if present
foreach ( Artwork artwork in Optional (
// fall back to default art
metadata . Artwork . Find ( a = > a . ArtworkKind = = ArtworkKind . Thumbnail ) ) )
Artwork artwork = await Optional ( metadata . Artwork . Find ( a = > a . ArtworkKind = = ArtworkKind . Thumbnail ) )
. IfNoneAsync (
new Artwork
{
Id = 0 ,
ArtworkKind = ArtworkKind . Thumbnail ,
Path = Path . Combine ( FileSystemLayout . ResourcesCacheFolder , "song_album_cover_512.png" ) ,
} ) ;
// signal that we want to use cover art as watermark
videoVersion = new CoverArtMediaVersion
{
{
// signal that we want to use cover art as watermark
Chapters = [ ] ,
videoVersion = new CoverArtMediaVersion
// always stretch cover art
Width = 1 9 2 ,
Height = 1 0 8 ,
SampleAspectRatio = "1:1" ,
Streams = new List < MediaStream >
{
{
Chapters = new List < MediaChapter > ( ) ,
new ( ) { MediaStreamKind = MediaStreamKind . Video , Index = 0 }
// always stretch cover art
}
Width = 1 9 2 ,
} ;
Height = 1 0 8 ,
SampleAspectRatio = "1:1" ,
Streams = new List < MediaStream >
{
new ( ) { MediaStreamKind = MediaStreamKind . Video , Index = 0 }
}
} ;
string customPath = _ imageCache . GetPathForImage (
string customPath = _ imageCache . GetPathForImage (
artwork . Path ,
artwork . Path ,
ArtworkKind . Thumbnail ,
ArtworkKind . Thumbnail ,
Option < int > . None ) ;
Option < int > . None ) ;
watermarkPath = customPath ;
watermarkPath = customPath ;
// only blurhash real album art
if ( artwork . Id > 0 )
{
// randomize selected blur hash
// randomize selected blur hash
var hashes = new List < string >
var hashes = new List < string >
{
{