Opencv Как наложить текст на видео со звуковым файлом, аудио и текст должны быть синхронизированы - PullRequest
0 голосов
/ 20 января 2020

Я новичок в OpenCV. Я создал видео с текстом и изображением. работает нормально но когда я пытаюсь добавить аудио в файл, звук не синхронизируется c с текстом.

Я использую OpenCV и FFmpeg. также пытался MoviePy, но не работал.

class CreateVideoFromMP3AndText(object):
    default_path = "new_filename.mp4"

    def __init__(self, text, audio, video=None):
        self.text = text
        self.audio = audio
        self.video = video

    def get_paragraphs(self):
        return tokenize.sent_tokenize(self.text)

    def convert_image_2_video(self):
        img_array = []
        for text in self.get_paragraphs():
            for filename in glob.glob(os.path.join(settings.STATIC_ROOT, "images/bg-head-01.jpg")):
                img = cv2.imread(filename)
                height, width, layers = img.shape
                size = (width, height)
                font = cv2.FONT_HERSHEY_SIMPLEX
                fontScale = 1
                font_size = 1
                color = (255, 0, 0)
                thickness = 2
                for i in range(50):
                    img_array.append(img)
                wrapped_text = textwrap.wrap(text, width=35)
                i = 0
                for text in wrapped_text:
                    textsize = cv2.getTextSize(text, font, font_size, thickness)[0]
                    gap = textsize[1] + 10
                    y = int((img.shape[0] + textsize[1]) / 2) + i * gap
                    x = int((img.shape[1] - textsize[0]) / 2)
                    org = (x, y)
                    image = cv2.putText(img, text, org, font, fontScale, color, thickness, cv2.LINE_AA)
                    i += 1
                img_array.append(image)
        out = cv2.VideoWriter(self.default_path, cv2.VideoWriter_fourcc(*"DIVX"), 50, size)
        for i in range(len(img_array)):
            out.write(img_array[i])
        out.release()
        cmd = "ffmpeg -i {} -i {} -map 0:0 -map 1:0 -c:v copy -c:a copy -y {}".format(self.default_path, self.audio.path, "new.mp4")
        subprocess.call(cmd, shell=True)

вызов вышеупомянутого класса ниже cmd

v_audio = CreateVideoFromMP3AndText(text, audio, file_name="test.mp4")
v_audio.convert_image_2_video()

Мне действительно нужна помощь, чтобы решить эту проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...