用 Python 做個(gè)小姐姐代碼蹦迪視頻
前言
一、核心功能設(shè)計(jì)
二、實(shí)現(xiàn)步驟
1. 下載視頻
pip install you-getyou-get -o 本地保存路徑 視頻鏈接 2. 截取GIF并轉(zhuǎn)換成ASCII字符
使用ASCII Animator將截取的GIF每一幀轉(zhuǎn)換成ASCII。我們可以通過設(shè)置每100個(gè)像素寬度的字符數(shù)修改轉(zhuǎn)換的字符密集程度。輸出類型可以選擇動(dòng)畫ASCII(.gif)
3. GIF重命名
import osimport reimport shutilimport cv2from PIL import Imageimport moviepy.editor as mpy
def rename_gif():file_list = os.listdir("./temp") # 讀取當(dāng)前文件夾所有文件# print(file_list)print("檢測(cè)到文件夾下圖片:")n = len(file_list)num_list = []num1 = num2 = 0for i in range(n):s = str(file_list[i])if s[-4:] == ".gif": # 檢查后綴res = re.findall(r"\d+", s)if res[0] == '1':num1 += 1if res[0] == '2':num2 += 1src = os.path.join(os.path.abspath('./temp/'), s) # 原先的圖片名字dst = os.path.join(os.path.abspath('./temp/'), res[0] + '-' + res[1]+'.gif') # 根據(jù)自己的需要重新命名os.rename(src, dst) # 重命名,覆蓋原先的名字num_list.append(num1)num_list.append(num2)file_list = os.listdir("./temp") # 讀取當(dāng)前文件夾所有文件for i in range(n):s = str(file_list[i])if s[-4:] == ".gif": # 檢查后綴res = re.findall(r"\d+", s)src = os.path.join(os.path.abspath('./temp/'), s) # 原先的圖片名字a = int(res[0])-1index = a*num_list[a-1]dst = os.path.join(os.path.abspath('./temp/'), str(index + int(res[1])) + '.gif') # 根據(jù)自己的需要重新命名os.rename(src, dst) # 重命名,覆蓋原先的名字
4. gif轉(zhuǎn)換為圖片jpg
def gif2img(gif_path):gifs = os.listdir(gif_path)gifs.sort(key=lambda x: int(x[:-4])) # 以名稱字符串的數(shù)字從小到大排序for gif in gifs:im = Image.open(gif_path+gif) # 打開gif格式的圖片im = im.convert('RGB')if not os.path.exists('./img'):os.makedirs('./img')for i, frame in enumerate(iter_frames(im)):frame.save('./img/' + gif[0:-4] + '.jpg', **frame.info) # 保存成jpg格式
5. 合成代碼舞視頻
pip install opencv-python我們可以將圖片文件夾的路徑傳入?yún)?shù),還可以通過fps設(shè)置每秒多少?gòu)垐D片。
def charts2video(img_path, video_path):"""將給定目錄下的圖片轉(zhuǎn)成視頻Args:img_path: 圖片路徑video_path: 輸出視頻的路徑和名稱Returns: 圖片轉(zhuǎn)成的視頻"""images = os.listdir(img_path)images.sort(key=lambda x: int(x[:-4])) # 以名稱字符串的數(shù)字從小到大排序fps = 12 # 幀數(shù)fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V')im = Image.open(img_path + images[0])video_writer = cv2.VideoWriter(video_path, fourcc, fps, im.size)for img_i in images:frame = cv2.imread(img_path + img_i)print('開始將 ' + img_i + ' 加入視頻\n')video_writer.write(frame) # 注意:圖片尺寸必須和視頻尺寸一樣,不然不會(huì)被加入視頻中!!!video_writer.release()

6. 添加背景音樂
def add_music():# 讀取代碼視頻my_clip = mpy.VideoFileClip('asc.mp4')# 截取背景音樂audio_background = mpy.AudioFileClip('dance.mp4').subclip(0, 60)audio_background.write_audiofile('bk.mp3')# 視頻中插入音頻final_clip = my_clip.set_audio(audio_background)# 保存最終視頻final_clip.write_videofile('char_video.mp4')
(完)
本文鏈接:
https://blog.csdn.net/hhladminhhl/article/details/118463344
評(píng)論
圖片
表情









