mirror of
https://github.com/stashapp/stash.git
synced 2025-12-07 00:43:12 +01:00
* Refactor transcode generation * Move phash generation into separate package * Refactor image thumbnail generation * Move JSONTime to separate package * Ffmpeg refactoring * Refactor live transcoding * Refactor scene marker preview generation * Refactor preview generation * Refactor screenshot generation * Refactor sprite generation * Change ffmpeg.IsStreamable to return error * Move frame rate calculation into ffmpeg * Refactor file locking * Refactor title set during scan * Add missing lockmanager instance * Return error instead of logging in MatchContainer
38 lines
814 B
Go
38 lines
814 B
Go
package transcoder
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/stashapp/stash/pkg/ffmpeg"
|
|
)
|
|
|
|
var ErrUnsupportedFormat = errors.New("unsupported image format")
|
|
|
|
type ImageThumbnailOptions struct {
|
|
InputFormat ffmpeg.ImageFormat
|
|
OutputPath string
|
|
MaxDimensions int
|
|
Quality int
|
|
}
|
|
|
|
func ImageThumbnail(input string, options ImageThumbnailOptions) ffmpeg.Args {
|
|
var videoFilter ffmpeg.VideoFilter
|
|
videoFilter = videoFilter.ScaleMaxSize(options.MaxDimensions)
|
|
|
|
var args ffmpeg.Args
|
|
|
|
args = args.Overwrite().
|
|
ImageFormat(options.InputFormat).
|
|
Input(input).
|
|
VideoFilter(videoFilter).
|
|
VideoCodec(ffmpeg.VideoCodecMJpeg)
|
|
|
|
if options.Quality > 0 {
|
|
args = args.FixedQualityScaleVideo(options.Quality)
|
|
}
|
|
|
|
args = args.ImageFormat(ffmpeg.ImageFormatImage2Pipe).
|
|
Output(options.OutputPath)
|
|
|
|
return args
|
|
}
|