Skip to content

Commit

Permalink
[conf] - update ffmpeg
Browse files Browse the repository at this point in the history
  • Loading branch information
otavio-code committed Jan 25, 2025
1 parent 9d22bde commit 14ec8b7
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 22 deletions.
38 changes: 22 additions & 16 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,24 +1,30 @@
ZIP_FILE=deployment_package.zip
FFMPEG_URL=https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
FFMPEG_DIR=ffmpeg
S3_BUCKET=ffmpeg-package-for-lambda
FFMPEG_S3_KEY=ffmpeg/ffmpeg-release-amd64-static.tar.xz

.PHONY: build
build:
@echo "Criando diretórios necessários..."
rm -rf package
mkdir -p package/tmp
@echo "Instalando dependências..."
pip install --target ./package -r app/requirements.txt
@echo "Baixando FFmpeg..."
curl -L $(FFMPEG_URL) | tar -xJ -C package/tmp --strip-components 1
cp package/tmp/ffmpeg package/
@echo "Compactando pacote de implantação..."
cd package && zip -r9 ../$(ZIP_FILE) .
zip -g $(ZIP_FILE) app/lambda_function.py app/src/**/*
@echo "Pacote de implantação criado: $(ZIP_FILE)"
@echo "Criando diretórios necessários..."
rm -rf package
mkdir -p package/tmp
@echo "Instalando dependências..."
pip install --target ./package -r app/requirements.txt
@echo "Compactando pacote de implantação..."
cd package && zip -r9 ../$(ZIP_FILE) .
zip -g $(ZIP_FILE) app/lambda_function.py app/src/**/*
@echo "Pacote de implantação criado: $(ZIP_FILE)"

.PHONY: upload-ffmpeg
upload-ffmpeg:
@echo "Baixando FFmpeg..."
curl -L $(FFMPEG_URL) -o ffmpeg-release-amd64-static.tar.xz
@echo "Enviando FFmpeg para o S3..."
aws s3 cp ffmpeg-release-amd64-static.tar.xz s3://$(S3_BUCKET)/$(FFMPEG_S3_KEY)
@echo "FFmpeg enviado para o S3: s3://$(S3_BUCKET)/$(FFMPEG_S3_KEY)"

.PHONY: clean
clean:
@echo "Limpando arquivos temporários..."
rm -rf package $(ZIP_FILE)
@echo "Limpeza concluída."
@echo "Limpando arquivos temporários..."
rm -rf package $(ZIP_FILE) ffmpeg-release-amd64-static.tar.xz
@echo "Limpeza concluída."
24 changes: 18 additions & 6 deletions app/src/service/ffmpeg_extract_frames.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,21 @@
import os
import subprocess
import boto3
from src.config.config import logger

s3 = boto3.client('s3')
S3_BUCKET = 'ffmpeg-package-for-lambda'
FFMPEG_S3_KEY = 'ffmpeg/ffmpeg-release-amd64-static.tar.xz'
FFMPEG_LOCAL_PATH = '/tmp/ffmpeg-release-amd64-static.tar.xz'
FFMPEG_BIN_PATH = '/tmp/ffmpeg'

def download_ffmpeg():
logger.info(f"Baixando FFmpeg do S3: s3://{S3_BUCKET}/{FFMPEG_S3_KEY}")
s3.download_file(S3_BUCKET, FFMPEG_S3_KEY, FFMPEG_LOCAL_PATH)
logger.info("Extraindo FFmpeg...")
subprocess.run(['tar', '-xJf', FFMPEG_LOCAL_PATH, '-C', '/tmp', '--strip-components', '1'], check=True)
logger.info("FFmpeg extraído com sucesso.")

def extract_frames_with_ffmpeg(video_path, output_dir):
"""
Extrai frames de um vídeo usando FFmpeg.
Expand All @@ -13,10 +27,8 @@ def extract_frames_with_ffmpeg(video_path, output_dir):
"""
os.makedirs(output_dir, exist_ok=True)

ffmpeg_path = '/tmp/ffmpeg' # Caminho esperado para o binário do FFmpeg
if not os.path.isfile(ffmpeg_path):
logger.error(f"FFmpeg não encontrado em {ffmpeg_path}. Verifique o download e o caminho.")
raise FileNotFoundError(f"FFmpeg não encontrado no caminho {ffmpeg_path}")
if not os.path.isfile(FFMPEG_BIN_PATH):
download_ffmpeg()

if not os.path.isfile(video_path):
logger.error(f"O arquivo de vídeo não foi encontrado: {video_path}")
Expand All @@ -25,7 +37,7 @@ def extract_frames_with_ffmpeg(video_path, output_dir):
output_frame_pattern = os.path.join(output_dir, 'frame_%04d.jpg')

command = [
ffmpeg_path, # Caminho do executável FFmpeg
FFMPEG_BIN_PATH, # Caminho do executável FFmpeg
'-i', video_path, # Caminho do vídeo de entrada
'-vf', 'fps=1', # Extrair 1 frame por segundo
output_frame_pattern # Padrão para salvar os frames
Expand All @@ -40,4 +52,4 @@ def extract_frames_with_ffmpeg(video_path, output_dir):
logger.error(f"Erro ao executar FFmpeg: {e.stderr}")
raise e

return output_dir
return output_dir

0 comments on commit 14ec8b7

Please sign in to comment.