Я новичок в 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()
Мне действительно нужна помощь, чтобы решить эту проблему