mirror of
https://github.com/immich-app/immich.git
synced 2025-05-24 01:12:58 -04:00
fix(server): use crf-based two pass for vp9 if max bitrate is disabled (#6535)
use crf-based two pass for vp9 if max bitrate is disabled
This commit is contained in:
parent
a9dc16ea6b
commit
c8b33c00ec
@ -888,6 +888,39 @@ describe(MediaService.name, () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should transcode by crf in two passes for vp9 when two pass mode is enabled and max bitrate is disabled', async () => {
|
||||||
|
mediaMock.probe.mockResolvedValue(probeStub.matroskaContainer);
|
||||||
|
configMock.load.mockResolvedValue([
|
||||||
|
{ key: SystemConfigKey.FFMPEG_MAX_BITRATE, value: '0' },
|
||||||
|
{ key: SystemConfigKey.FFMPEG_TWO_PASS, value: true },
|
||||||
|
{ key: SystemConfigKey.FFMPEG_TARGET_VIDEO_CODEC, value: VideoCodec.VP9 },
|
||||||
|
]);
|
||||||
|
assetMock.getByIds.mockResolvedValue([assetStub.video]);
|
||||||
|
await sut.handleVideoConversion({ id: assetStub.video.id });
|
||||||
|
expect(mediaMock.transcode).toHaveBeenCalledWith(
|
||||||
|
'/original/path.ext',
|
||||||
|
'upload/encoded-video/user-id/as/se/asset-id.mp4',
|
||||||
|
{
|
||||||
|
inputOptions: [],
|
||||||
|
outputOptions: [
|
||||||
|
'-c:v vp9',
|
||||||
|
'-c:a aac',
|
||||||
|
'-movflags faststart',
|
||||||
|
'-fps_mode passthrough',
|
||||||
|
'-map 0:0',
|
||||||
|
'-map 0:1',
|
||||||
|
'-v verbose',
|
||||||
|
'-vf scale=-2:720,format=yuv420p',
|
||||||
|
'-cpu-used 5',
|
||||||
|
'-row-mt 1',
|
||||||
|
'-crf 23',
|
||||||
|
'-b:v 0',
|
||||||
|
],
|
||||||
|
twoPass: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should configure preset for vp9', async () => {
|
it('should configure preset for vp9', async () => {
|
||||||
mediaMock.probe.mockResolvedValue(probeStub.matroskaContainer);
|
mediaMock.probe.mockResolvedValue(probeStub.matroskaContainer);
|
||||||
configMock.load.mockResolvedValue([
|
configMock.load.mockResolvedValue([
|
||||||
|
@ -356,7 +356,7 @@ export class VP9Config extends BaseConfig {
|
|||||||
|
|
||||||
getBitrateOptions() {
|
getBitrateOptions() {
|
||||||
const bitrates = this.getBitrateDistribution();
|
const bitrates = this.getBitrateDistribution();
|
||||||
if (this.eligibleForTwoPass()) {
|
if (bitrates.max > 0 && this.eligibleForTwoPass()) {
|
||||||
return [
|
return [
|
||||||
`-b:v ${bitrates.target}${bitrates.unit}`,
|
`-b:v ${bitrates.target}${bitrates.unit}`,
|
||||||
`-minrate ${bitrates.min}${bitrates.unit}`,
|
`-minrate ${bitrates.min}${bitrates.unit}`,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user