Skip to content

Commit 1d198b3

Browse files
committed
Merge branch 'develop'
2 parents 6bef26d + 37f6cc5 commit 1d198b3

File tree

4 files changed

+32
-17
lines changed

4 files changed

+32
-17
lines changed

Dockerfile

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
# Base node stage that sets up common config for dev & prod
22
FROM public.ecr.aws/docker/library/node:18-slim as node
33

4-
# Add wget in for healthchecks
4+
# Install these native packages
55
RUN apt-get update \
6-
&& apt-get install -y --no-install-recommends ca-certificates wget curl \
6+
&& apt-get install -y --no-install-recommends \
7+
ca-certificates wget curl \
8+
# Install ffprobe from here, as the npm version is manually published and as of comment segfaults with urls
9+
ffmpeg \
710
&& apt-get clean -q -y \
811
&& rm -rf /var/lib/apt/lists/*
912

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@
4242
"@nestjs/graphql": "^12.0.8",
4343
"@nestjs/platform-express": "^10.2.1",
4444
"@patarapolw/prettyprint": "^1.0.3",
45-
"@seedcompany/common": ">=0.10 <1",
45+
"@seedcompany/common": ">=0.11 <1",
4646
"@seedcompany/data-loader": "^0.5.4",
4747
"@seedcompany/nestjs-email": "^3.3.2",
4848
"@seedcompany/scripture": "^0.3.0",
49-
"argon2": "^0.31.0",
49+
"argon2": "^0.31.1",
5050
"aws-xray-sdk-core": "^3.5.1",
5151
"chalk": "^5.3.0",
5252
"class-transformer": "^0.5.1",

src/components/file/media/media-detector.service.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import { path as ffprobeBinary } from '@ffprobe-installer/ffprobe';
1+
import npmFfprobe from '@ffprobe-installer/ffprobe';
22
import { forwardRef, Inject, Injectable } from '@nestjs/common';
3-
import { execa } from 'execa';
3+
import { CachedByArg as Once } from '@seedcompany/common';
4+
import { $, execa } from 'execa';
45
import { FFProbeResult } from 'ffprobe';
56
import { imageSize } from 'image-size';
67
import { ISize as ImageSize } from 'image-size/dist/types/interface';
@@ -69,11 +70,12 @@ export class MediaDetector {
6970
}
7071

7172
private async ffprobe(url: string): Promise<Partial<FFProbeResult>> {
73+
const binaryPath = await this.getFfprobeBinaryPath();
7274
try {
7375
return await retry(
7476
async () => {
7577
const probe = await execa(
76-
ffprobeBinary,
78+
binaryPath,
7779
[
7880
'-v',
7981
'error',
@@ -104,4 +106,14 @@ export class MediaDetector {
104106
return {};
105107
}
106108
}
109+
110+
@Once()
111+
private async getFfprobeBinaryPath() {
112+
try {
113+
await retry(async () => await $`which ffprobe`, { retries: 3 });
114+
return 'ffprobe';
115+
} catch {
116+
return npmFfprobe.path;
117+
}
118+
}
107119
}

yarn.lock

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)