示例#1
0
    def test_can_extract_thumbnail(self):
        manager = VideoManager(
            os.path.join(os.path.dirname(__file__), "input", "test2.mp4"),
        )
        _, thumbnail = tempfile.mkstemp(".jpg")

        extracted_thumbnail = manager.extract_thumbnail(thumbnail)

        self.assertEqual(thumbnail, extracted_thumbnail)
        self.assertTrue(os.path.exists(extracted_thumbnail))

        os.remove(thumbnail)
def main():
    logger = logging.getLogger()

    logger.info("start processing %s", input_file)

    manager = VideoManager(input_file)
    audio = manager.extract_audio(settings.ROOT / "output/a.wav")
    thumbnail = manager.extract_thumbnail(settings.ROOT / "output/a.jpg")

    audio_manager = AudioManager(audio)
    transcriber = Transcriber(audio_manager)

    filter_sections = []

    for transcribtion in transcriber.transcribe():
        logger.debug("transcription: %s", transcribtion)
        word, start, end = transcribtion
        if detect_mature_word(word):
            logger.debug("mature word: %s, %s", word, detect_mature_word(word))
            audio_manager.apply_beep(start, end)
            manager.apply_mask(start, end)
            filter_sections.append({
                "start_time": start,
                "end_time": end,
                "word": word
            })

    manager.apply_audio(audio_manager.save(settings.ROOT /
                                           "output/a_beep.wav"))
    manager.save(settings.ROOT / "output/a.mp4")

    print(
        json.dumps({
            "thumbnail": str(thumbnail),
            "filter_sections": filter_sections,
            "filter_video": str(settings.ROOT / "output" / "a.mp4"),
        }))