文章目錄
- 一、代碼思路
- 二、準備作業
- 1、 匯入需要用的庫
- 2、準備音頻
- 3、爬取圖片
- 三、完整代碼
- 四、運行效果
- 五、Blogger's speech
為了批量下載壁紙,學習了爬蟲,
學習之后發現,下載之后,還要手動去篩選,我就想了一下能不能把圖片合成視頻,一秒一張圖,根據秒數,確定圖片名,
之前已經嘗試過了,感覺看的程序很無聊了,于是,我就想著能不能加個音頻在視頻上,
于是有了這篇文章,一切都是為了懶!(哈哈哈)
完成之后,發現下載程序如果列印行程的話,很無聊,幾乎都是重復的字串,于是我就想,能不能把代碼實作程序,用進度條實作出來,于是發現了tqdm,超級好用!!!
一、代碼思路

二、準備作業
1、 匯入需要用的庫
import os
import cv2
import requests
from tqdm import tqdm
from lxml import etree
from mutagen.mp3 import MP3
from moviepy.editor import VideoFileClip, AudioFileClip
2、準備音頻
我下載了LiSA - 紅蓮華 (THE FIRST TAKE Studio Ver.).mp3,但為了之后方便寫路徑,我重命名放在了D盤,路徑為’D:/hlh.mp3’,
3、爬取圖片
為了合成的視頻能有較好的觀感,我選擇爬取有固定解析度的圖片網站,找了一下,最后選擇了陰陽師官方插畫(其實就是想偷個懶,我之前寫過一次 )
具體可以參考:Python爬蟲,超簡單地實作一鍵提取陰陽師原畫
這篇博文我之前也寫過如何把圖片合成視頻,
三、完整代碼
# -*- coding: UTF-8 -*-
"""
@Author :遠方的星
@Time : 2021/4/18 21:26
@CSDN :https://blog.csdn.net/qq_44921056
@騰訊云 : https://cloud.tencent.com/developer/column/91164
"""
import os
import cv2
import requests
from tqdm import tqdm
from lxml import etree
from mutagen.mp3 import MP3
from moviepy.editor import VideoFileClip, AudioFileClip
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
}
path = 'D:/test/tupian'
if not os.path.exists(path):
os.mkdir(path)
# 爬取陰陽師圖片
def get_picture(url, num_1, num_2):
response = requests.get(url=url, headers=headers).text
html = etree.HTML(response)
lists = html.xpath('/html/body/div[2]/div[3]/div[1]/div[3]/div[2]/div')
num = 0
for i in tqdm(range(num_1, num_2)): # tqdm的作用是加上行程進度條
a = lists[i].xpath('./div/div/a[contains(text(), "1920x1080")]') # 根據文本內容鎖定節點a
if a == []: # 有些圖片的解析度較少,需要加上條件篩選
num += 1
else:
image_url = a[0].xpath('./@href')[0] # 獲取原畫壁紙鏈接
image_data = requests.get(url=image_url).content
image_name = '{}.jpg'.format(num) # 給每張圖片命名
save_path = path + '/' + image_name # 圖片的保存地址
with open(save_path, 'wb') as f:
f.write(image_data)
f.close()
num += 1
# 合成視頻
def get_video(num_1, num_2):
video_dir = 'D:/test/result.mp4' # 輸出視頻的保存路徑
fps = 1 # 幀率
img_size = (1920, 1080) # 圖片尺寸
fourcc = cv2.VideoWriter_fourcc(*"mp4v")
videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size)
for i in tqdm(range(num_1, num_2)):
img_path = 'D:/test/tupian/' + '{}.jpg'.format(i)
frame = cv2.imread(img_path)
frame = cv2.resize(frame, img_size) # 生成視頻 圖片尺寸和設定尺寸相同
videoWriter.write(frame) # 將圖片寫進視頻里
videoWriter.release() # 釋放資源
# 加入音頻
def get_audio():
videoFile = 'D:/test/result.mp4' # 視頻檔案
video = VideoFileClip(videoFile)
videos = video.set_audio(AudioFileClip('D:/hlh.mp3')) # 音頻檔案
videos.write_videofile('D:/test/sound.mp4', audio_codec='aac') # 保存合成視頻,注意加上引數audio_codec='aac',否則音頻無聲音
# 計算每個音頻的時間(秒)
def get_time_count():
audio = MP3("D:/hlh.mp3")
time_count = int(audio.info.length)
return time_count
def main():
base_url = 'https://yys.163.com/media/picture.html'
num_1 = 0
num_2 = get_time_count()
print('開始爬取陰陽師插畫,請稍等片刻')
get_picture(base_url, num_1, num_2)
print('圖片正在整和成視頻,請稍后片刻')
get_video(num_1, num_2)
print('正在給視頻加入音頻')
get_audio()
print('恭喜你,完整的視頻已經生成了!!!')
if __name__ == '__main__':
main()
四、運行效果

(由于時間有點長,就錄了一點點,擔心圖片過大)
程式運行結束頁面

視頻:
我竟然用python合成了一個陰陽師插畫合集
五、Blogger’s speech
如有不足,還請大佬評論區留言或私信我,我會進行補充,
感謝您的支持,希望可以點贊,關注,收藏,一鍵三連喲,
作者:遠方的星
CSDN:https://blog.csdn.net/qq_44921056
騰訊云:https://cloud.tencent.com/developer/column/91164
本文僅用于交流學習,未經作者允許,禁止轉載,更勿做其他用途,違者必究,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/278477.html
標籤:python
