diff options
Diffstat (limited to 'server/tests/api/transcoding/transcoder.ts')
-rw-r--r-- | server/tests/api/transcoding/transcoder.ts | 80 |
1 files changed, 78 insertions, 2 deletions
diff --git a/server/tests/api/transcoding/transcoder.ts b/server/tests/api/transcoding/transcoder.ts index 245c4c012..48a20e1d5 100644 --- a/server/tests/api/transcoding/transcoder.ts +++ b/server/tests/api/transcoding/transcoder.ts | |||
@@ -7,11 +7,11 @@ import { canDoQuickTranscode } from '@server/helpers/ffmpeg' | |||
7 | import { generateHighBitrateVideo, generateVideoWithFramerate, getAllFiles } from '@server/tests/shared' | 7 | import { generateHighBitrateVideo, generateVideoWithFramerate, getAllFiles } from '@server/tests/shared' |
8 | import { buildAbsoluteFixturePath, getMaxBitrate, getMinLimitBitrate } from '@shared/core-utils' | 8 | import { buildAbsoluteFixturePath, getMaxBitrate, getMinLimitBitrate } from '@shared/core-utils' |
9 | import { | 9 | import { |
10 | getAudioStream, | ||
11 | buildFileMetadata, | 10 | buildFileMetadata, |
11 | getAudioStream, | ||
12 | getVideoStreamBitrate, | 12 | getVideoStreamBitrate, |
13 | getVideoStreamFPS, | ||
14 | getVideoStreamDimensionsInfo, | 13 | getVideoStreamDimensionsInfo, |
14 | getVideoStreamFPS, | ||
15 | hasAudioStream | 15 | hasAudioStream |
16 | } from '@shared/extra-utils' | 16 | } from '@shared/extra-utils' |
17 | import { HttpStatusCode, VideoState } from '@shared/models' | 17 | import { HttpStatusCode, VideoState } from '@shared/models' |
@@ -727,6 +727,82 @@ describe('Test video transcoding', function () { | |||
727 | }) | 727 | }) |
728 | }) | 728 | }) |
729 | 729 | ||
730 | describe('Bounded transcoding', function () { | ||
731 | |||
732 | it('Should not generate an upper resolution than original file', async function () { | ||
733 | this.timeout(120_000) | ||
734 | |||
735 | await servers[0].config.updateExistingSubConfig({ | ||
736 | newConfig: { | ||
737 | transcoding: { | ||
738 | enabled: true, | ||
739 | hls: { enabled: true }, | ||
740 | webtorrent: { enabled: true }, | ||
741 | resolutions: { | ||
742 | '0p': false, | ||
743 | '144p': false, | ||
744 | '240p': true, | ||
745 | '360p': false, | ||
746 | '480p': true, | ||
747 | '720p': false, | ||
748 | '1080p': false, | ||
749 | '1440p': false, | ||
750 | '2160p': false | ||
751 | }, | ||
752 | alwaysTranscodeOriginalResolution: false | ||
753 | } | ||
754 | } | ||
755 | }) | ||
756 | |||
757 | const { uuid } = await servers[0].videos.quickUpload({ name: 'video', fixture: 'video_short.webm' }) | ||
758 | await waitJobs(servers) | ||
759 | |||
760 | const video = await servers[0].videos.get({ id: uuid }) | ||
761 | const hlsFiles = video.streamingPlaylists[0].files | ||
762 | |||
763 | expect(video.files).to.have.lengthOf(2) | ||
764 | expect(hlsFiles).to.have.lengthOf(2) | ||
765 | |||
766 | // eslint-disable-next-line @typescript-eslint/require-array-sort-compare | ||
767 | const resolutions = getAllFiles(video).map(f => f.resolution.id).sort() | ||
768 | expect(resolutions).to.deep.equal([ 240, 240, 480, 480 ]) | ||
769 | }) | ||
770 | |||
771 | it('Should only keep the original resolution if all resolutions are disabled', async function () { | ||
772 | this.timeout(120_000) | ||
773 | |||
774 | await servers[0].config.updateExistingSubConfig({ | ||
775 | newConfig: { | ||
776 | transcoding: { | ||
777 | resolutions: { | ||
778 | '0p': false, | ||
779 | '144p': false, | ||
780 | '240p': false, | ||
781 | '360p': false, | ||
782 | '480p': false, | ||
783 | '720p': false, | ||
784 | '1080p': false, | ||
785 | '1440p': false, | ||
786 | '2160p': false | ||
787 | } | ||
788 | } | ||
789 | } | ||
790 | }) | ||
791 | |||
792 | const { uuid } = await servers[0].videos.quickUpload({ name: 'video', fixture: 'video_short.webm' }) | ||
793 | await waitJobs(servers) | ||
794 | |||
795 | const video = await servers[0].videos.get({ id: uuid }) | ||
796 | const hlsFiles = video.streamingPlaylists[0].files | ||
797 | |||
798 | expect(video.files).to.have.lengthOf(1) | ||
799 | expect(hlsFiles).to.have.lengthOf(1) | ||
800 | |||
801 | expect(video.files[0].resolution.id).to.equal(720) | ||
802 | expect(hlsFiles[0].resolution.id).to.equal(720) | ||
803 | }) | ||
804 | }) | ||
805 | |||
730 | after(async function () { | 806 | after(async function () { |
731 | await cleanupTests(servers) | 807 | await cleanupTests(servers) |
732 | }) | 808 | }) |