|
|
@@ -48,3 +48,45 @@ class TestVideoActivityFEFunctional(FEFunctionalTest): |
|
|
|
self.assertTrue(testfe.features) |
|
|
|
# check if the feature interval is within the expected range |
|
|
|
self.assertTrue(testfe.features[0].interval.start >= START_TIME) |
|
|
|
|
|
|
|
|
|
|
|
class TestLoudAudioFEFunctional(FEFunctionalTest): |
|
|
|
"""TestAudioLoudnessFEFunctional -- functional tests for audio loudness feature extractor |
|
|
|
""" |
|
|
|
|
|
|
|
def test_audio_loudness_functional_one_feature(self): |
|
|
|
"""Test audio loudness feature extractor |
|
|
|
|
|
|
|
use: |
|
|
|
- sample_videos/sample-manual-audio.mp4 :: audio at 15-20s -- pass if audio detected anywhere in this range |
|
|
|
-- peak at 16s - 18s, verify this is highest scoring |
|
|
|
""" |
|
|
|
SAMPLE_VIDEO = f"{self.SAMPLE_DIR}/sample-manual-audio.mp4" |
|
|
|
|
|
|
|
START_TIME = 15 |
|
|
|
END_TIME = 20 |
|
|
|
PEAK_START = 16 |
|
|
|
PEAK_END = 18 |
|
|
|
# create mock source with the video |
|
|
|
source = mocks.MockSource(path=SAMPLE_VIDEO) |
|
|
|
|
|
|
|
# create the feature extractor |
|
|
|
testfe = extractors.LoudAudioFeatureExtractor(input_files=[source]) |
|
|
|
testfe.setup() |
|
|
|
testfe.run() |
|
|
|
testfe.teardown() |
|
|
|
|
|
|
|
# check if the feature was extracted: |
|
|
|
self.assertTrue(testfe.features) |
|
|
|
# check if the feature interval is within the expected range |
|
|
|
self.assertTrue(testfe.features[0].interval.start >= START_TIME) |
|
|
|
|
|
|
|
# get sorted list of features based on feature.score |
|
|
|
sorted_features = sorted(testfe.features, key=lambda x: x.score, reverse=True) |
|
|
|
# check if the highest scoring feature is within the peak range |
|
|
|
self.assertTrue(sorted_features[0].interval.start >= PEAK_START) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
unittest.main() |