IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Moviepy音视频开发:生成过场剪辑显示特定信息和倒计时信息 -> 正文阅读

[Python知识库]Moviepy音视频开发:生成过场剪辑显示特定信息和倒计时信息

#### ? ?  [老猿Python博文目录](https://blog.csdn.net/LaoYuanPython/article/details/98245036) ?

在这里插入图片描述

一、引言

这两天要剪辑一个视频,从几个各自完整场景的短视频拼接成一个视频,每个短视频前都有个文字标题和倒计时的过场,为了做好这个过场,老猿用代码实现了一个。

二、实现思路介绍

1、本次使用了《OpenCV-Python图形图像处理:自用的一些工具函数功能及调用语法介绍》介绍的公用函数imgAddText,getTextSize
2、实现时,首先构造一个指定大小和指定单一背景色的图像,然后在其中添加要显示的文本信息,以及倒计时要显示的数字,相关信息都是根据背景图像大小和文本要占用的大小自动调整显示位置;
3、读入倒计时的‘滴’声,将其在图片显示时播放,如果找不到声音文件,可以将相关代码去除。

三、主程序完整代码

from  moviepy.editor import *
from opencvPublic import imgAddText,getTextSize
import numpy as np


def constructBlankImg(size,bgColor=(0,0,0)):
    l =  len(bgColor)

    if l==1:
        img = np.full((size[1],size[0]),bgColor,dtype=np.uint8)
    else:
        img = np.full((size[1], size[0],l),bgColor, dtype=np.uint8)
    return img

def constructTransmitFrame(size,bgColor=(0,0,0),wordsInf=None):
    img = constructBlankImg(size,bgColor)
    if wordsInf:
        for wInf in wordsInf:
            words,font,color,pos = wInf
            l= len(color)
            img = imgAddText(img, words, font, color, pos)

    return img

def constructTransmitClip(size,bgColor=(0,0,0),title=None):
    h = size[1]
    titleFont = 128
    digitFont = 96

    if title:
        w1, h1 = getTextSize(title,titleFont)
        w2,h2 = getTextSize('3',digitFont)
        pos1 = int((h-(h1+h2+30))/3)
        pos2 = pos1+h1+30

        inf1 =[(title,titleFont,(0,0,255),pos1),('3',digitFont,(255,0,0),pos2)]
        inf2 = [(title, titleFont, (0, 0, 255), pos1), ('2', digitFont, (255, 0, 0), pos2)]
        inf3 = [(title, titleFont, (0, 0, 255), pos1), ('1', digitFont, (255, 0, 0), pos2)]
        inf4 = [(title, titleFont, (0, 0, 255), pos1), ('0', digitFont, (255, 0, 0), pos2)]

    else:
        inf1 = [ ('3', digitFont, (255, 0, 0),'C')]
        inf2 = [('2', digitFont, (255, 0, 0), 'C')]
        inf3 = [('1', digitFont, (255, 0, 0), 'C')]
        inf4 = [('0', digitFont, (255, 0, 0), 'C')]

    img1 = constructTransmitFrame(size,bgColor,inf1)
    img2 = constructTransmitFrame(size, bgColor, inf2)
    img3 = constructTransmitFrame(size, bgColor, inf3)
    img4 = constructTransmitFrame(size, bgColor, inf4)

    audio = AudioFileClip(r'F:\video\倒计时.mp3')
    audio1 = audio.subclip(1.40, 2.28).set_duration(1)
    audio2 = audio.subclip(3, 4.20)
    clip1 = ImageClip(img1,duration=1).set_audio(audio1)
    clip2 = ImageClip(img2, duration=1).set_audio(audio1)
    clip3 = ImageClip(img3, duration=1).set_audio(audio1)
    clip4 = ImageClip(img4, duration=1).set_audio(audio1)


    clip = concatenate_videoclips([clip1, clip2,clip3,clip4], 'compose')
    clip = clip.set_fps(10).speedx(2)
    clip.write_videofile (r"F:\video\test.mp4")
    return clip

constructTransmitClip((960,640),(0,0,0),'老猿Python: https://blog.csdn.net/LaoYuanPython')

四、效果

在这里插入图片描述

五、小结

本文通过代码构建了一段实现倒数计时的过场影片段,可以用于拼接多个视频时作为过场使用。

更多相关moviepy知识的介绍请参考 Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载》的导览式介绍。

写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

如对文章内容存在疑问,可在博客评论区留言,或通过扫描博客左边的二维码关注:老猿Python 微信公号发消息咨询。

关于老猿的付费专栏

  1. 付费专栏《 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 使用PyQt开发图形界面Python应用专栏目录》;

  2. 付费专栏《 moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《moviepy音视频开发专栏文章目录》;

  3. 付费专栏《 OpenCV-Python初学者疑难问题集》为《 OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《 OpenCV-Python初学者疑难问题集专栏目录

  4. 付费专栏《Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《 OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《 专栏:Python基础教程目录》从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

? ? 前往老猿Python博文目录 ?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:07:41  更:2021-07-15 16:08:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:33:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码