Skip to content

Commit 26625e9

Browse files
committed
allow seconds to be a closure
1 parent 80edf13 commit 26625e9

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

src/Definitions/MediaConversionPoster.php

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class MediaConversionPoster extends MediaConversionDefinition
2020
{
2121
/**
2222
* @param null|string|(Closure(Media $media, ?MediaConversion $parent):string) $fileName
23+
* @param TimeCode|float|(Closure(Media $media, ?MediaConversion $parent):TimeCode) $seconds
2324
*/
2425
public function __construct(
2526
public string $name,
@@ -30,7 +31,7 @@ public function __construct(
3031
public ?string $queue = null,
3132
public array $conversions = [],
3233
public null|Closure|string $fileName = null,
33-
public TimeCode|float $seconds = 0.0,
34+
public Closure|TimeCode|float $seconds = 0.0,
3435
public ?int $width = null,
3536
public ?int $height = null,
3637
public Fit $fit = Fit::Contain,
@@ -69,6 +70,21 @@ public function getFileName(Media $media, ?MediaConversion $parent): string
6970
return "{$source->name}.jpg";
7071
}
7172

73+
public function getTimeCode(Media $media, ?MediaConversion $parent): TimeCode
74+
{
75+
$seconds = $this->seconds;
76+
77+
if (is_float($seconds)) {
78+
return TimeCode::fromSeconds($seconds);
79+
}
80+
81+
if ($seconds instanceof TimeCode) {
82+
return $seconds;
83+
}
84+
85+
return $seconds($media, $parent);
86+
}
87+
7288
public function handle(
7389
Media $media,
7490
?MediaConversion $parent,
@@ -84,11 +100,7 @@ public function handle(
84100

85101
FFMpeg::fromFilesystem($filesystem)
86102
->open($file)
87-
->getFrameFromTimecode(
88-
is_float($this->seconds)
89-
? TimeCode::fromSeconds($this->seconds)
90-
: $this->seconds
91-
)
103+
->getFrameFromTimecode($this->getTimeCode($media, $parent))
92104
->export()
93105
->save($fileName);
94106

0 commit comments

Comments
 (0)