package ffmpeg import ( "fmt" "os" "os/exec" ) type FileConverter struct { } func NewFileConverter() *FileConverter { return &FileConverter{} } func (c *FileConverter) Convert(src, dest string) error { // Проверяем существование исходного файла if _, err := os.Stat(src); os.IsNotExist(err) { return fmt.Errorf("input file does not exist: %s", src) } // Проверяем, что ffmpeg доступен в системе if _, err := exec.LookPath("ffmpeg"); err != nil { return fmt.Errorf("ffmpeg not found in PATH: %w", err) } // Создаем команду ffmpeg для конвертации в OGG cmd := exec.Command("ffmpeg", "-i", src, // входной файл "-c:a", "libvorbis", // кодек Vorbis для OGG "-q:a", "4", // качество аудио (0-10, где 4 - хорошее качество) "-y", // перезаписать выходной файл если существует dest, // выходной файл ) // Выполняем команду if err := cmd.Run(); err != nil { return fmt.Errorf("ffmpeg conversion failed: %w", err) } // Проверяем, что выходной файл был создан if _, err := os.Stat(dest); os.IsNotExist(err) { return fmt.Errorf("output file was not created: %s", dest) } return nil }