Skip to main content

1. Scène

Si vous tapez souvent sur Trick et Wechat Circle, vous devez trouver la dernière vidéo la plus proche de neuf heures de neuf heures très chaude! D'un ami de peinture de neuf dimensions, allez à la vidéo de neuf heures, par rapport aux vidéos vidéo traditionnelles, semblait précédemment être plus personnelle et forcée







# 安装两个依赖# 视频处理pip3 install moviepy# 图片处理依赖pip3 install Pillow





def mkdir_folder(file_path): """ 创建一个文件夹,如果不存在就创建;否则不做处理 :param file_path: :return: """ if os.path.exists(file_path): return os.mkdir(file_path)# 新建临时文件夹和输出文件夹mkdir_folder(self.path_temp)mkdir_folder(self.path_output)

self.video_raw_clip = VideoFileClip(file_path)# 宽、高self.video_width, self.video_height = self.video_raw_clip.w, self.video_raw_clip.h# 帧率self.fps = self.video_raw_clip.fps# 视频时长self.during = self.video_raw_clip.duration

def get_audio_from_video(video_raw_clip, output_path): """ 从视频中提取音频 :param video_raw_clip: 视频Clip对象 :param output_path: 输出音频文件完整路径 :return: """ audio = video_raw_clip.audio audio.write_audiofile(output_path) return output_path

i = 1for frame in self.video_raw_clip.iter_frames(): image = Image.fromarray(frame) # 视频帧图片保存的临时路径(完整路径) frame_file_complete_path = self.path_temp + "%04d.jpg" % i i += 1
En plus du logiciel Clip traditionnel, avez-vous d'autres façons plus rapides? Par exemple, créez un bouton, créez une série? Pas beaucoup de non-sens, cet article utilisera Python une fois cliquer pour créer un court-t-neuf palais, une vidéo élégante pour vous aider dans un cercle radeforme!
# 1、剪成9张图片,计算每张图片的宽、高item_width = int(self.video_width / 3)item_height = int(self.video_height / 3)# 2、新的宽、高item_width_new = self.video_width + self.item_space * 2item_height_new = self.video_height + self.item_space * 2# 3、重新建一个画布背景new_image = Image.new(image.mode, (item_width_new, item_height_new), color='white') Lundi, Préparation

Avant de commencer les combats réels, utilisez 2 dépendances, à savoir:

# 4、裁剪图片,然后粘贴到新的画布中去# i:横向、j:纵向for i in range(0, 3): for j in range(0, 3): # 裁剪区域 box = (j * item_width, i * item_height, (j + 1) * item_width, (i + 1) * item_height) # 根据区域,裁剪图片 crop_image = image.crop(box) # 横向、纵向第2块和第3块,要加上偏移距离 x = 0 if j == 0 else (item_width + self.item_space) * j y = 0 if i == 0 else (item_height + self.item_space) * i # 将9张图片,按照上面计算的坐标值,粘贴到背景中去 new_image.paste(crop_image, (int(x), int(y))) # 保存图片到本地 new_image.save(frame_file_complete_path) 1, manipulez la vidéo MoviePy

.
Troisième combat, réalité def pics_to_video(pics_path, output_path, fps): """ 图片转为视频 pics_to_video('./../gif_temp/', './../video_temp/temp1.mp4', 20) :param pics_path: :param output_path: :return: """ image_paths = list(map(lambda x: pics_path + x, os.listdir(pics_path))) # 注意:这里必须进行一次排序,保证所有帧的顺序是一致 image_paths = sort_strings_with_emb_numbers(image_paths) # 过滤掉非图片 image_paths = list(filter(lambda image_path: image_path.endswith('.jpg'), image_paths)) # 图片剪辑类 clip = ImageSequenceClip(image_paths, fps=fps) clip.write_videofile(output_path)
avant la bataille réelle, préparez un premier document vidéo audio par 6 étapes, la vidéo d'origine est convertie en une vidéo de neuf heures ] 1. Nouveau répertoire de manutention Créez un nouveau dossier temporaire de dossier et de sortie vidéo 2, vidéo audio Vidéo et bases vidéo Premièrement, suivez les vidéos originales, construisez des vidéos sur des vidéos à l'aide de films pour obtenir de grandes vidéos Haute vitesse de trame, informations sur le temps . Les objets audio BGM sont extraits de la vidéo et sont écrits à 3, Tourner le cadre vidéo Nous utilisons l'objet d'objet d'objet Clip iter_frames (), collectez la boucle Toutes les images de cadre vidéo Doivent être indiqués, pour assurer la commodité du côté vidéo synthétisant après, indique ici le nom de fichier du cadre vidéo La vidéo est coupée en 9 images, nous pouvons clairement spécifier la distance entre images, puis calculez des dessins neufs et très larges, en tirant enfin une image de fond blanc Suivant, la valeur de coordonnées de chaqueLa zone est obtenue et la distance est combinée avec les seconde zones verticales, verticales et 3 images.Déplacez-la, collez-la dans l'image nouvellement bâtie ci-dessus 4, vidéo de synthèse de l'image de panier pour créer l'image du cadre de l'étape précédente, en fonction de la vitesse de trame de La vidéo d'origine Il convient de noter que pour que la vidéo créée ne soit pas déroutante, il est préférable d'organiser l'image du cadre par nom 5, Ajouter une musique de fond BGM Les fichiers audio vidéo originaux seront définis sur un fichier vidéo créé à l'étape précédente, puis écrivez dans un nouveau fichier pour aller 6, Supprimer le fichier temporaire Enregistrez la vidéo avec les fichiers temporaires de Shuttil, y compris des images de cadre, des fichiers vidéo temporaires supprimés
Catégories