Skip to content

Commit 99d48ca

Browse files
author
Guillaume Marchand
committed
version 13-06-2024
1 parent a29cee0 commit 99d48ca

File tree

22 files changed

+1929
-229
lines changed

22 files changed

+1929
-229
lines changed

Diff for: CHANGELOG.md

+13
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,19 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## version v0.0.8
6+
7+
### Added
8+
9+
- New compute family available Fargate with Graviton 2: You can run your applications using the Fargate (Serverless) launch type with the ARM64 architecture.
10+
- Upgrade : FFmpeg 7.0.1 for `intel`, `arm`, `amd`, `nvidia`, `fargate`, `fargate-arm`
11+
- Improve compatibility with several AWS Regions: ap-southeast-2``ap-south-1``sa-east-1``eu-west-3``us-east-1``us-west-2``eu-central-1`
12+
13+
### Changed
14+
15+
- Fix stack destroy issues
16+
- Fix multi region deployment
17+
518
## version v0.0.7
619

720
### Changed

Diff for: README.md

+11-10
Original file line numberDiff line numberDiff line change
@@ -117,18 +117,19 @@ So, parameters of the solution are
117117
- `ìnput_url`: AWS S3 url synced to the local storage and tranformed to local path by the solution.
118118
- `output_file_options`: FFmpeg output file options described in the official documentation.
119119
- `output_url`: AWS S3 url synced from the local storage to AWS S3 storage.
120-
- `compute`: Instances family used to compute the media asset : `intel`, `arm`, `amd`, `nvidia`, `fargate`, `xilinx`
120+
- `compute`: Instances family used to compute the media asset : `intel`, `arm`, `amd`, `nvidia`, `fargate`, `fargate-arm`, `xilinx`
121121
- `name`: metadata of this job for observability.
122122

123123
The solution has different FFmpeg versions per AWS EC2 instance families.
124124

125125
| **Compute** | **FFmpeg version per default** | **FFmpeg version(s) available** |
126126
|-------------|--------------------------------|---------------------------------|
127-
| intel | 6.0 (snapshot) | 6.0, 5.1 |
128-
| arm | 6.0 (snapshot) | 6.0, 5.1 |
129-
| amd | 6.0 (snapshot) | 6.0, 5.1 |
130-
| nvidia | 6.0 (snapshot) | 6.0, 5.1 |
131-
| fargate | 6.0 (snapshot) | 6.0, 5.1 |
127+
| intel | 7.0.1 | 6.0, 5.1 |
128+
| arm | 7.0.1 | 6.0, 5.1 |
129+
| amd | 7.0.1 | 6.0, 5.1 |
130+
| nvidia | 7.0 (snapshot) | 6.0, 5.1 |
131+
| fargate | 7.0.1 | 6.0, 5.1 |
132+
| fargate-arm | 7.0.1 | 6.0, 5.1 |
132133
| xilinx | 4.4 | 4.4 |
133134

134135
In this example we use the AWS SDK "Boto3" (Python) and I want to cut a specific part of a video. First of all, I uploaded a video in the Amazon S3 bucket created by the solution, and complete the parameters below :
@@ -194,8 +195,8 @@ Per default, AWS Batch chooses by itself an EC2 instance type available. If I wa
194195
instance_type = 'c5.large'
195196
result = batch.submit_job(
196197
jobName=job_name,
197-
jobQueue="batch-FFmpeg-job-queue-" + compute,
198-
jobDefinition="batch-FFmpeg-job-definition-" + compute,
198+
jobQueue="batch-ffmpeg-job-queue-" + compute,
199+
jobDefinition="batch-ffmpeg-job-definition-" + compute,
199200
parameters=command,
200201
nodeOverrides={
201202
"nodePropertyOverrides": [
@@ -250,7 +251,7 @@ In this example, we use the AWS CLI. A Step Functions execution receives a JSON
250251
Parameters of this `input.json are:
251252

252253
- `$.name`: metadata of this job for observability.
253-
- `$.compute`: Instances family used to compute the media asset : `intel`, `arm`, `amd`, `nvidia`, `xilinx`.
254+
- `$.compute`: Instances family used to compute the media asset : `intel`, `arm`, `amd`, `nvidia`, `xilinx`, `fargate`, `fargate-arm`.
254255
- `$.input.s3_bucket` and `$.input.s3_prefix`: S3 url of the list of Amazon S3 Objects to be processed by FFMPEG.
255256
- `$.input.file_options`: FFmpeg input file options described in the official documentation.
256257
- `$.output.s3_bucket` and `$.output.s3_prefix`: S3 url where all processed media assets will be stored on Amazon S3.
@@ -301,7 +302,7 @@ The CDK stack is described in the directory `/cdk`.
301302

302303
## Performance and quality metrics
303304

304-
AWS Customers also wants to use this solution to benchmark the video encoding performance and quality of Amazon EC2 instance families. I analyze performance and video quality metrics thanks to AWS X-Ray service. i define 3 segments : Amazon S3 download, FFmpeg Execution and Amazon S3 upload.
305+
AWS Customers also wants to use this solution to benchmark the video encoding performance and quality of Amazon EC2 instance families. I analyze performance and video quality metrics thanks to AWS X-Ray service. I define 3 segments : Amazon S3 download, FFmpeg Execution and Amazon S3 upload.
305306

306307
If I switch the AWS SSM (Systems Manager) Parameter `/batch-ffmpeg/ffqm` to `TRUE`, quality metrics PSNR, SSIM, VMAF are calculated and exported as an AWS X-RAY metadata and as a JSON file in the Amazon S3 bucket with the key prefix `/metrics/ffqm`. Those metrics are available through AWS Athena views `batch_FFmpeg_ffqm_psnr`, `batch_FFmpeg_ffqm_ssim`, `batch_FFmpeg_ffqm_vmaf`.
307308

Diff for: application/Taskfile.yml

+2-38
Original file line numberDiff line numberDiff line change
@@ -13,42 +13,6 @@ tasks:
1313
- |
1414
{{.DOCKER_EXE}} version
1515
16-
kaniko-nvidia:
17-
desc: "Build Container image for nvidia"
18-
cmds:
19-
- task: kaniko-build
20-
vars:
21-
VARIANT: nvidia2004
22-
VERSION: 6.0
23-
ARCH: amd64
24-
25-
kaniko-xilinx:
26-
desc: "Build Container image for xilinx"
27-
cmds:
28-
- task: kaniko-build
29-
vars:
30-
VARIANT: xilinx2004
31-
VERSION: 4.4
32-
ARCH: amd64
33-
34-
kaniko-ubuntu:
35-
desc: "Build Container image for ubuntu"
36-
cmds:
37-
- task: kaniko-build
38-
vars:
39-
VARIANT: ubuntu2004
40-
VERSION: 6.0
41-
ARCH: amd64
42-
43-
kaniko-arm64:
44-
desc: "Build Container image for ubuntu"
45-
cmds:
46-
- task: kaniko-build
47-
vars:
48-
VARIANT: ubuntu2004
49-
VERSION: 6.0
50-
ARCH: arm64
51-
5216
docker-xilinx:
5317
desc: "Build Container image for xilinx"
5418
deps: [docker-login]
@@ -76,7 +40,7 @@ tasks:
7640
- task: docker-build
7741
vars:
7842
VARIANT: ubuntu2004-amd64
79-
VERSION: 6.0
43+
VERSION: 7.0
8044
ARCH: linux/amd64
8145

8246
docker-arm64:
@@ -86,7 +50,7 @@ tasks:
8650
- task: docker-build
8751
vars:
8852
VARIANT: ubuntu2004-arm64
89-
VERSION: 6.0
53+
VERSION: 7.0
9054
ARCH: linux/arm64
9155

9256
docker-login:

Diff for: application/docker-images/6.0/nvidia2004-amd64/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ RUN add-apt-repository ppa:deadsnakes/ppa -y \
6262
# Build
6363
FROM devel-base as build
6464

65-
ENV FFMPEG_VERSION=snapshot \
65+
ENV FFMPEG_VERSION=6.1.1 \
6666
NVIDIA_HEADERS_VERSION=12.1.14.0 \
6767
AOM_VERSION=3.7.0 \
6868
FDKAAC_VERSION=2.0.2 \
@@ -127,7 +127,7 @@ RUN \
127127
DIR=/tmp/nv-codec-headers && \
128128
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \
129129
cd ${DIR} && \
130-
#git checkout n${NVIDIA_HEADERS_VERSION} && \
130+
git checkout n${NVIDIA_HEADERS_VERSION} && \
131131
make PREFIX="${PREFIX}" && \
132132
make install PREFIX="${PREFIX}" && \
133133
rm -rf ${DIR}

Diff for: application/docker-images/6.0/ubuntu2004-amd64/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ RUN add-apt-repository ppa:deadsnakes/ppa -y \
3232

3333
FROM base as build
3434

35-
ENV FFMPEG_VERSION=snapshot \
35+
ENV FFMPEG_VERSION=6.1.1 \
3636
AOM_VERSION=3.7.0 \
3737
FDKAAC_VERSION=2.0.2 \
3838
FONTCONFIG_VERSION=2.14.2 \

Diff for: application/docker-images/6.0/ubuntu2004-arm64/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ RUN add-apt-repository ppa:deadsnakes/ppa -y \
3232

3333
FROM base as build
3434

35-
ENV FFMPEG_VERSION=snapshot \
35+
ENV FFMPEG_VERSION=6.1.1 \
3636
AOM_VERSION=3.7.0 \
3737
FDKAAC_VERSION=2.0.2 \
3838
FONTCONFIG_VERSION=2.14.2 \

0 commit comments

Comments
 (0)