当前位置:   article > 正文

一起用Python做个自动化短视频生成脚本,实现热门视频流水线生产!_在python中实现集锦生成_python 制作带货短视频

python 制作带货短视频

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

if not os.path.exists(root):
os.makedirs(root)

参数为需爬取的页数

for i in range(2):
url = ‘http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=’ + words + “&pn=” + str(
pageId) + “&gsm=?&ct=&ic=0&lm=-1&width=0&height=0”
pageId += 20
html = requests.get(url, headers=headers)
lastNum = dowmloadimg(html.text, words, lastNum, ) # 执行一次获取60张图


至此我们就可以根据关键字将图片爬取下来,并将图片根据**数字顺序命名**,如下图所示。


![在这里插入图片描述](https://img-blog.csdnimg.cn/97689e44c3124bb380a34ec7de0b3001.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARHJhZ29u5bCR5bm0,size_20,color_FFFFFF,t_70,g_se,x_16)


##### 2. 图片统一格式大小


第二步,我们需要将获取的图片进行**大小格式统一**,方便后面的视频合成。这里我们可以自己手动筛选部分需要resize统一大小的图片,也可以对爬取的整个文件夹下图片批量统一格式大小。对于图片大小尺寸可以通过代码进行设置,这里我们将所有图片大小统一成600\*800的。核心代码如下:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

将所有图像resize成600*800,并保存

def resize_image(image_name):
# 获取输入文件夹中的所有文件
files = os.listdir(‘./’ + image_name)
output_dir = ‘./resize/’
# 判断输出文件夹是否存在,不存在则创建
if not os.path.exists(output_dir):
os.makedirs(output_dir)
for file in files:
if file[-4:] == “.jpg”:
img = Image.open(‘./’ + image_name + ‘/’ + file)
# 将所有图片均转成RGB,防止图片格式异常
img = img.convert(‘RGB’)
# resize图片大小设置成600*800
img = img.resize((600, 800), Image.ANTIALIAS)
img.save(os.path.join(output_dir, file))


![在这里插入图片描述](https://img-blog.csdnimg.cn/45c836fc6cd34f639a3b38f3c6ba01c3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARHJhZ29u5bCR5bm0,size_20,color_FFFFFF,t_70,g_se,x_16)


##### 3. 视频合成


第三步,我们可以将这些格式大小统一的图片进行视频合成,这里我们可以把整个文件夹中的图片全部合成,也可以自己手动选取部分。合成的时候我们根据图片的数字命名顺序进行一次合并,核心代码如下:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

def charts2video(img_path, video_path):
“”“将给定目录下的图片转成视频
img_path: 图片路径
video_path: 输出视频的路径名称
返回: 图片转成的视频
“””
images = os.listdir(img_path)
images.sort(key=lambda x: int(x[:-4])) # 以名称字符串的数字从小到大排序  
fps = 1.5 # 帧数
fourcc = cv2.VideoWriter_fourcc(‘D’, ‘I’, ‘V’, ‘X’)
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) # 图片尺寸必须和视频尺寸一样,不然不会被加入视频中!!!
video_writer.release()


这里如果我们要控制视频每秒钟播放的图片张数,可以根据**fps代表的每一秒播放多少张图片对帧数自行设置**,从而完成图片的视频合成。


##### 4. 截取背景音乐


第四步,在背景音乐截取前,我们首先需要**确认视频时长**,这样我们才能截取适时的背景音乐。所以我们可以先获取视频的长度,返回的就是以s为单位的视频时长,核心代码如下:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

def get_video_time(filename):
cap = cv2.VideoCapture(filename)
if cap.isOpened():
rate = cap.get(5)
frame_num =cap.get(7)
duration = frame_num/rate
return duration
return -1
t = get_video_duration(‘./你的名字.mp4’)


视频时长知道了,接下来我们就要进行背景音乐截取了,之前博主有写过一篇文章,关于如何[用Python自制一款炫酷音乐播放器]( ),感兴趣的可以去看看是如何制作的。音乐播放器博主已开放源码,**可通过文末公众号获取**。


今天我们就使用这款自制的音乐播放器来下载我们需要的音乐。例如我们就以《错位时空》作为背景音乐,我们可以先通过这款音乐播放器将这首歌下载到本地。如下图所示。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d3e58af13f854bcf8abb42d0b5c41c9c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARHJhZ29u5bCR5bm0,size_20,color_FFFFFF,t_70,g_se,x_16)  
 音乐下载完毕,接下来就是音乐截取,这里我们提供了两种方式。一种是截取歌曲高潮部分,另一种是自己选取歌曲截取区间。


**歌曲高潮自动截取:**  
 经常刷短视频的小伙伴,可以看到网上很多短视频背景音乐都是歌曲的高潮部分。那么Python能否自动获取歌曲的高潮部分呢?当然!Python已经考虑到了,可以自动截取歌曲高潮部分,这里我们需要用到**pychorus模块**,具体这个是如何实现,大家可以网上查资料研究研究。


首先我们需要安装下pychorus模块



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

pip install pychorus


安装完成后,导入pychorus模块,一行代码调用就可以实现,这里传入的**参数t**就是上面我们获取的视频时长,这样可以确保截取的背景音乐和视频时长一致,方便视频和音乐合成。


同时我们还需要注意下,一般一首歌曲的时长大概3-4分钟,所以我们**传入的t最好不要超过1分钟,否则可能会出现高潮截取失败**。核心代码如下:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

from pychorus import find_and_output_chorus
chorus_start_sec = find_and_output_chorus(“./错位时空 - 艾辰.mp3”, “./错位时空_high.wav”, t)


如下图,我们知道了视频的时长是26s,然后截取背景音乐,自动获取的高潮部分是从2分32秒开始,时长26s。至此我们就可以把当前歌曲的高潮部分截取出来进行最后的视频和音乐合并了。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f6fcb4f6230a42ab85f3d7646f996d30.png)


**自定义截取歌曲区间:**


如果本身我们的视频长度较长,截取不到歌曲高潮部分怎么办呢?我们可以进行自己定义歌曲截取区间来获取背景音乐,下面就演示下,截取歌曲从20s开始到90s结束,核心代码如下:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

截取背景音乐

audio_background = mpy.AudioFileClip(‘./错位时空 - 艾辰.mp3’).subclip(20, 90)
audio_background.write_audiofile(‘bk.mp3’)


![在这里插入图片描述](https://img-blog.csdnimg.cn/2b839c2402d54b25adbb60625bbb08ec.png)


##### 5. 视频和背景音乐合并


第五步,我们需要把视频和刚刚截取好的背景音乐进行合并,合成一个新的视频,核心代码如下:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

def add_music():
# 读取代码视频
my_clip = mpy.VideoFileClip(‘你的名字.mp4’)
# 截取背景音乐
audio_background = mpy.AudioFileClip(‘错位时空_high.wav’)
# 视频中插入音频
final_clip = my_clip.set_audio(audio_background)
# 保存最终视频
final_clip.write_videofile(‘result.mp4’)


至此,整个视频就可以自动生成,实现热门视频流水线生产了!下面我们一起运行下看看自动生成的视频效果如何吧。


**一、Python所有方向的学习路线**

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

![img](https://img-blog.csdnimg.cn/1d40facda2b84990b8e1743f5487d455.png)  
![img](https://img-blog.csdnimg.cn/0fc11d4a31bd431dbf124f67f1749046.png)

**二、Python必备开发工具**

工具都帮大家整理好了,安装就可直接上手!![img](https://img-blog.csdnimg.cn/ff266f529c6a46c4bc28e5f895dec647.gif#pic_center)

**三、最新Python学习笔记**

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

![img](https://img-blog.csdnimg.cn/6d414e9f494742db8bcc3fa312200539.png)

**四、Python视频合集**

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

![img](https://img-blog.csdnimg.cn/a806d9b941c645858c61d161aec43789.png)

**五、实战案例**

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。![img](https://img-blog.csdnimg.cn/a353983317b14d3c8856824a0d6186c1.png)

**六、面试宝典**

![在这里插入图片描述](https://img-blog.csdnimg.cn/97c454a3e5b4439b8600b50011cc8fe4.png)

![在这里插入图片描述](https://img-blog.csdnimg.cn/111f5462e7df433b981dc2430bb9ad39.png)

###### **简历模板**![在这里插入图片描述](https://img-blog.csdnimg.cn/646863996ac44da8af500c049bb72fbd.png#pic_center)




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)**
![img](https://img-blog.csdnimg.cn/img_convert/cdbddae579abc9385a356046756d32bb.png)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)**
[外链图片转存中...(img-LUk2t5Vf-1713443722550)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/779705
推荐阅读
相关标签
  

闽ICP备14008679号