You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.4 KiB
Python
93 lines
3.4 KiB
Python
import os, sys, click
|
|
|
|
from .scenario import Scenario
|
|
|
|
from ffx.test.helper import createMediaTestFile
|
|
from ffx.process import executeProcess
|
|
|
|
from ffx.file_properties import FileProperties
|
|
|
|
from ffx.media_descriptor import MediaDescriptor
|
|
from ffx.track_descriptor import TrackDescriptor
|
|
|
|
from ffx.track_type import TrackType
|
|
from ffx.track_disposition import TrackDisposition
|
|
|
|
|
|
class Scenario1(Scenario):
|
|
"""Creating file VAa, h264/aac/aac
|
|
Converting to VaA, vp9/opus/opus
|
|
No tmdb, default parameters"""
|
|
|
|
def __init__(self, context):
|
|
super().__init__(context)
|
|
|
|
def run(self):
|
|
|
|
click.echo(f"Running scenario 1")
|
|
|
|
kwargs = {}
|
|
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = TrackType.VIDEO
|
|
kwargs[TrackDescriptor.DISPOSITION_SET_KEY] = set([TrackDisposition.DEFAULT])
|
|
trackDescriptor1 = TrackDescriptor(**kwargs)
|
|
|
|
kwargs = {}
|
|
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = TrackType.AUDIO
|
|
kwargs[TrackDescriptor.DISPOSITION_SET_KEY] = set([TrackDisposition.DEFAULT])
|
|
trackDescriptor2 = TrackDescriptor(**kwargs)
|
|
|
|
kwargs = {}
|
|
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = TrackType.AUDIO
|
|
trackDescriptor3 = TrackDescriptor(**kwargs)
|
|
|
|
kwargs = {}
|
|
kwargs[MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY] = [trackDescriptor1,
|
|
trackDescriptor2,
|
|
trackDescriptor3]
|
|
sourceMediaDescriptor = MediaDescriptor(**kwargs)
|
|
sourceMediaDescriptor.reindexSubIndices()
|
|
|
|
# Phase 1: Setup source files
|
|
mediaFilePath = createMediaTestFile(mediaDescriptor=sourceMediaDescriptor, directory=self._testDirectory)
|
|
|
|
# Phase 2: Prepare database
|
|
|
|
# Phase 3: Run ffx
|
|
commandSequence = [sys.executable,
|
|
self._ffxExecutablePath,
|
|
'convert',
|
|
mediaFilePath]
|
|
|
|
click.echo(f"Scenarion 1 test sequence: {commandSequence}")
|
|
|
|
out, err, rc = executeProcess(commandSequence, directory = self._testDirectory)
|
|
click.echo(f"process output: {out}")
|
|
|
|
|
|
# Phase 4: Evaluate results
|
|
|
|
try:
|
|
|
|
resultFile = os.path.join(self._testDirectory, 'media.webm')
|
|
|
|
assert os.path.isfile(resultFile), f"Result file 'media.webm' in path '{self._testDirectory}' wasn't created"
|
|
|
|
resultFileProperties = FileProperties(self._context, resultFile)
|
|
resultMediaDescriptor = resultFileProperties.getMediaDescriptor()
|
|
|
|
resultMediaTracks = resultMediaDescriptor.getAllTrackDescriptors()
|
|
|
|
assert len(resultMediaTracks) == 3, f"Result file contains unexpected number of streams"
|
|
|
|
assert resultMediaTracks[0].getType() == TrackType.VIDEO, f"Stream #0 is not of type video"
|
|
|
|
assert resultMediaTracks[1].getType() == TrackType.AUDIO, f"Stream #1 is not of type audio"
|
|
assert not resultMediaTracks[1].getDispositionFlag(TrackDisposition.DEFAULT), f"Stream #1 has set default disposition"
|
|
|
|
assert resultMediaTracks[2].getType() == TrackType.AUDIO, f"Stream #2 is not of type audio"
|
|
assert resultMediaTracks[2].getDispositionFlag(TrackDisposition.DEFAULT), f"Stream #1 has not set default disposition"
|
|
|
|
except AssertionError as ae:
|
|
|
|
click.echo(f"Scenario 1 test failed ({ae})")
|