Leapcell에서 FFmpeg 앱 배포하기
몇 단계만으로 Leapcell에서 FFmpeg를 사용하여 비디오 또는 이미지를 처리하는 Flask Python 앱을 배포할 수 있습니다. 이 가이드에서는 Flask를 통해 파일을 업로드하여 FFmpeg 작업을 처리하는 인터페이스로 Flask를 사용하는 방법을 보여줍니다. 그런 다음 FFmpeg를 사용하여 파일을 처리합니다.
이 빠른 시작에서는 FFmpeg 명령을 실행하는 샘플 Flask 앱을 사용하며, 이를 사용자 지정하여 요구 사항에 맞게 조정할 수 있습니다.
:::
계속하려면 GitHub 계정이 필요합니다. 계정이 없는 경우 GitHub 웹사이트에서 만들 수 있습니다.
:::
1. GitHub에서 Flask FFmpeg 예제를 포 크합니다.
레포: Flask FFmpeg 예제
다음은 비디오를 다른 형식으로 변환하는 FFmpeg 명령을 실행하는 기본 app.py
파일입니다.
from flask import Flask, request, jsonify
import subprocess
app = Flask(__name__)
@app.route('/convert', methods=['POST'])
def convert_video():
# 요청에서 비디오 파일 가져오기
file = request.files['file']
output_format = request.form['format']
# 입력 파일 저장, '/tmp' 폴더에 있어야 함
input_path = '/tmp/input_video.mp4'
file.save(input_path)
# 출력 경로 정의
output_path = f'/tmp/output_video.{output_format}'
# FFmpeg를 실행하여 비디오 변환
command = ['ffmpeg', '-i', input_path, output_path]
subprocess.run(command, check=True)
# 변환된 파일의 경로 반환
return jsonify({"output_file": output_path})
if __name__ == '__main__':
app.run(debug=True)
이 Flask 앱은 POST 요청을 통해 비디오 파일을 수락하고 FFmpeg를 사용하여 원하는 형식으로 변환합니다.
다음 명령을 사용하여 API를 로컬에서 테스트할 수 있습니다.
curl -F "file=@/path/to/video.mp4" -F "format=mp4" http://localhost:5000/convert
/tmp/output_video.{output_format}
의 결과를 객체 스토리지 또는 기타 서비스에 업로드할 수 있습니다.
2. Leapcell 대시보드에서 서비스 생성 및 새 리포지토리 연결
Leapcell 대시보드로 이동하여 새 서비스 버튼을 클릭합니다.
"새 서비스" 페이지에서 방금 포크한 리포지토리를 선택합니다.
:::
리포지토리에 액세스하려면 Leapcell을 GitHub 계정에 연결해야 합니다.
연결되면 리포지토리가 목록에 나타납니다.
:::
3. 생성 중에 다음 값 제공:
:::
FFmpeg를 수동으로 설치해야 합니다. 빌드 명령에 다음을 포함합니다.
apt-get update && apt-get install -y ffmpeg && pip install -r requirements.txt
:::
필드 | 값 |
---|---|
런타임 | Python (모든 버전) |
빌드 명령 | apt-get update && apt-get install -y ffmpeg && pip install -r requirements.txt |
시작 명령 | gunicorn -w 1 -b :8080 app:app |
포트 | 8080 |
해당 필드에 이러한 값을 입력합니다.
4. 앱에 액세스
배포되면 배포 페이지에 foo-bar.leapcell.dev
와 같은 URL이 표시됩니다. 이 도메인을 사용하여 앱을 테스트합니다.
지속적인 배포
연결된 브랜치에 대한 모든 푸시는 자동으로 빌드 및 배포를 트리거합니다. 빌드가 실패하면 다음 성공적인 배포까지 현재 버전이 활성 상태로 유지됩니다.
지속적인 배포에 대해 자세히 알아보세요.