Move ffmpeg service to adapters

This commit is contained in:
2025-08-12 14:30:48 +03:00
parent bb3247d391
commit 03106830e5
5 changed files with 27 additions and 16 deletions

View File

@@ -0,0 +1,49 @@
package ffmpeg
import (
"fmt"
"os"
"os/exec"
)
const ffmpegExecutable = "ffmpeg"
type FfmpegConverter struct {
}
func NewFfmpegConverter() *FfmpegConverter {
return &FfmpegConverter{}
}
func (c *FfmpegConverter) 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(ffmpegExecutable); err != nil {
return fmt.Errorf("ffmpeg not found in PATH: %w", err)
}
// Создаем команду ffmpeg для конвертации в OGG
cmd := exec.Command(ffmpegExecutable,
"-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
}