Add ffmpeg converter to ogg format

This commit is contained in:
2025-08-11 10:11:13 +03:00
parent 87d8b05efb
commit c0d55c2088
7 changed files with 100 additions and 2 deletions

View File

@@ -0,0 +1,47 @@
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
}