diff options
author | Chocobozzz <me@florianbigard.com> | 2022-02-11 10:51:33 +0100 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2022-02-28 10:42:19 +0100 |
commit | c729caf6cc34630877a0e5a1bda1719384cd0c8a (patch) | |
tree | 1d2e13722e518c73d2c9e6f0969615e29d51cf8c /server/tests/api/videos/video-transcoder.ts | |
parent | a24bf4dc659cebb65d887862bf21d7a35e9ec791 (diff) | |
download | PeerTube-c729caf6cc34630877a0e5a1bda1719384cd0c8a.tar.gz PeerTube-c729caf6cc34630877a0e5a1bda1719384cd0c8a.tar.zst PeerTube-c729caf6cc34630877a0e5a1bda1719384cd0c8a.zip |
Add basic video editor support
Diffstat (limited to 'server/tests/api/videos/video-transcoder.ts')
-rw-r--r-- | server/tests/api/videos/video-transcoder.ts | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/server/tests/api/videos/video-transcoder.ts b/server/tests/api/videos/video-transcoder.ts index d24a8f4e1..245c4c012 100644 --- a/server/tests/api/videos/video-transcoder.ts +++ b/server/tests/api/videos/video-transcoder.ts | |||
@@ -3,10 +3,17 @@ | |||
3 | import 'mocha' | 3 | import 'mocha' |
4 | import * as chai from 'chai' | 4 | import * as chai from 'chai' |
5 | import { omit } from 'lodash' | 5 | import { omit } from 'lodash' |
6 | import { canDoQuickTranscode } from '@server/helpers/ffprobe-utils' | 6 | import { canDoQuickTranscode } from '@server/helpers/ffmpeg' |
7 | import { generateHighBitrateVideo, generateVideoWithFramerate } 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 { getAudioStream, getMetadataFromFile, getVideoFileBitrate, getVideoFileFPS, getVideoFileResolution } from '@shared/extra-utils' | 9 | import { |
10 | getAudioStream, | ||
11 | buildFileMetadata, | ||
12 | getVideoStreamBitrate, | ||
13 | getVideoStreamFPS, | ||
14 | getVideoStreamDimensionsInfo, | ||
15 | hasAudioStream | ||
16 | } from '@shared/extra-utils' | ||
10 | import { HttpStatusCode, VideoState } from '@shared/models' | 17 | import { HttpStatusCode, VideoState } from '@shared/models' |
11 | import { | 18 | import { |
12 | cleanupTests, | 19 | cleanupTests, |
@@ -287,8 +294,7 @@ describe('Test video transcoding', function () { | |||
287 | const file = videoDetails.files.find(f => f.resolution.id === 240) | 294 | const file = videoDetails.files.find(f => f.resolution.id === 240) |
288 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) | 295 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) |
289 | 296 | ||
290 | const probe = await getAudioStream(path) | 297 | expect(await hasAudioStream(path)).to.be.false |
291 | expect(probe).to.not.have.property('audioStream') | ||
292 | } | 298 | } |
293 | }) | 299 | }) |
294 | 300 | ||
@@ -478,14 +484,14 @@ describe('Test video transcoding', function () { | |||
478 | for (const resolution of [ 144, 240, 360, 480 ]) { | 484 | for (const resolution of [ 144, 240, 360, 480 ]) { |
479 | const file = videoDetails.files.find(f => f.resolution.id === resolution) | 485 | const file = videoDetails.files.find(f => f.resolution.id === resolution) |
480 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) | 486 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) |
481 | const fps = await getVideoFileFPS(path) | 487 | const fps = await getVideoStreamFPS(path) |
482 | 488 | ||
483 | expect(fps).to.be.below(31) | 489 | expect(fps).to.be.below(31) |
484 | } | 490 | } |
485 | 491 | ||
486 | const file = videoDetails.files.find(f => f.resolution.id === 720) | 492 | const file = videoDetails.files.find(f => f.resolution.id === 720) |
487 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) | 493 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) |
488 | const fps = await getVideoFileFPS(path) | 494 | const fps = await getVideoStreamFPS(path) |
489 | 495 | ||
490 | expect(fps).to.be.above(58).and.below(62) | 496 | expect(fps).to.be.above(58).and.below(62) |
491 | } | 497 | } |
@@ -499,7 +505,7 @@ describe('Test video transcoding', function () { | |||
499 | { | 505 | { |
500 | tempFixturePath = await generateVideoWithFramerate(59) | 506 | tempFixturePath = await generateVideoWithFramerate(59) |
501 | 507 | ||
502 | const fps = await getVideoFileFPS(tempFixturePath) | 508 | const fps = await getVideoStreamFPS(tempFixturePath) |
503 | expect(fps).to.be.equal(59) | 509 | expect(fps).to.be.equal(59) |
504 | } | 510 | } |
505 | 511 | ||
@@ -522,14 +528,14 @@ describe('Test video transcoding', function () { | |||
522 | { | 528 | { |
523 | const file = video.files.find(f => f.resolution.id === 240) | 529 | const file = video.files.find(f => f.resolution.id === 240) |
524 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) | 530 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) |
525 | const fps = await getVideoFileFPS(path) | 531 | const fps = await getVideoStreamFPS(path) |
526 | expect(fps).to.be.equal(25) | 532 | expect(fps).to.be.equal(25) |
527 | } | 533 | } |
528 | 534 | ||
529 | { | 535 | { |
530 | const file = video.files.find(f => f.resolution.id === 720) | 536 | const file = video.files.find(f => f.resolution.id === 720) |
531 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) | 537 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) |
532 | const fps = await getVideoFileFPS(path) | 538 | const fps = await getVideoStreamFPS(path) |
533 | expect(fps).to.be.equal(59) | 539 | expect(fps).to.be.equal(59) |
534 | } | 540 | } |
535 | } | 541 | } |
@@ -563,9 +569,9 @@ describe('Test video transcoding', function () { | |||
563 | const file = video.files.find(f => f.resolution.id === resolution) | 569 | const file = video.files.find(f => f.resolution.id === resolution) |
564 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) | 570 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) |
565 | 571 | ||
566 | const bitrate = await getVideoFileBitrate(path) | 572 | const bitrate = await getVideoStreamBitrate(path) |
567 | const fps = await getVideoFileFPS(path) | 573 | const fps = await getVideoStreamFPS(path) |
568 | const dataResolution = await getVideoFileResolution(path) | 574 | const dataResolution = await getVideoStreamDimensionsInfo(path) |
569 | 575 | ||
570 | expect(resolution).to.equal(resolution) | 576 | expect(resolution).to.equal(resolution) |
571 | 577 | ||
@@ -613,7 +619,7 @@ describe('Test video transcoding', function () { | |||
613 | const file = video.files.find(f => f.resolution.id === r) | 619 | const file = video.files.find(f => f.resolution.id === r) |
614 | 620 | ||
615 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) | 621 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) |
616 | const bitrate = await getVideoFileBitrate(path) | 622 | const bitrate = await getVideoStreamBitrate(path) |
617 | 623 | ||
618 | const inputBitrate = 60_000 | 624 | const inputBitrate = 60_000 |
619 | const limit = getMinLimitBitrate({ fps: 10, ratio: 1, resolution: r }) | 625 | const limit = getMinLimitBitrate({ fps: 10, ratio: 1, resolution: r }) |
@@ -637,7 +643,7 @@ describe('Test video transcoding', function () { | |||
637 | const video = await servers[1].videos.get({ id: videoUUID }) | 643 | const video = await servers[1].videos.get({ id: videoUUID }) |
638 | const file = video.files.find(f => f.resolution.id === 240) | 644 | const file = video.files.find(f => f.resolution.id === 240) |
639 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) | 645 | const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl) |
640 | const metadata = await getMetadataFromFile(path) | 646 | const metadata = await buildFileMetadata(path) |
641 | 647 | ||
642 | // expected format properties | 648 | // expected format properties |
643 | for (const p of [ | 649 | for (const p of [ |
@@ -668,8 +674,7 @@ describe('Test video transcoding', function () { | |||
668 | for (const server of servers) { | 674 | for (const server of servers) { |
669 | const videoDetails = await server.videos.get({ id: videoUUID }) | 675 | const videoDetails = await server.videos.get({ id: videoUUID }) |
670 | 676 | ||
671 | const videoFiles = videoDetails.files | 677 | const videoFiles = getAllFiles(videoDetails) |
672 | .concat(videoDetails.streamingPlaylists[0].files) | ||
673 | expect(videoFiles).to.have.lengthOf(10) | 678 | expect(videoFiles).to.have.lengthOf(10) |
674 | 679 | ||
675 | for (const file of videoFiles) { | 680 | for (const file of videoFiles) { |