func (f *FikoYTDosya) Kaydet() error { return f.kaydetInternal() } // Orijinal Isle fonksiyonu (event'siz) func (f *FikoYTDosya) Isle() error { outputFile := f.Path + filepath.Ext(f.File.Filename) mimeType, err := compressWithFFmpeg(f.Path, outputFile) if err != nil { return err } f.Processed = true f.ProcessedPath = outputFile f.MimeType = mimeType if f.isVideo() && f.ThumbId.IsZero() { f.generateThumbnail() } return nil } // Orijinal generateThumbnail func (f *FikoYTDosya) generateThumbnail() { if !f.isVideo() { return } tempDir := "./ffmpeg/files" f.ThumbId = primitive.NewObjectID() f.ThumbPath = filepath.Join(tempDir, f.ThumbId.Hex()+"_thumb.jpg") ffmpegArgs := []string{ "-i", f.ProcessedPath, "-ss", "00:00:01", "-vframes", "1", "-vcodec", "mjpeg", "-q:v", "5", "-vf", "scale='min(1920,iw)':'min(1080,ih)':force_original_aspect_ratio=decrease", "-an", "-f", "image2", "-hide_banner", "-nostats", "-loglevel", "quiet", "-y", f.ThumbPath, } cmd := exec.Command("ffmpeg", ffmpegArgs...) err := cmd.Run() if err != nil { f.ThumbId = primitive.NilObjectID f.ThumbPath = "" return } if _, err := os.Stat(f.ThumbPath); os.IsNotExist(err) { f.ThumbId = primitive.NilObjectID f.ThumbPath = "" return } f.ThumbGenerated = true } // Orijinal GridFS fonksiyonları