爱剪辑加字幕之经验及Python程序批量加字幕

最近学校社团做了个视频,以前都用Premiere加字幕比较麻烦,听说爱剪辑比较傻瓜,试了下的确比较方便,就在这里记录下经验吧。

成品视频效果见腾讯视频。主要是用After Effect套上一些照片的模板,再做几个如片头片尾的特效,之后用Premiere剪辑采访的视频素材和其他照片素材、特效素材,最终用爱剪辑加上字幕。整体视频后期大概用了是三人×一个礼拜的课余时间。

视频里用到的字幕主要有两种格式,第一种是全屏打字效果,第二种是普通的对话字幕及人物附注,见下面两张图。

全屏打字效果.png
对话字幕及人物附注.png

具体步骤

首先根据音频整理成文字稿,建议软件识别后人工修正,软件识别方法见[我的知乎回答][2]。
[2]: https://www.zhihu.com/question/20124290/answer/152611666

经过试验后字幕格式

  • 中文字体用冬青黑传统中文W3
  • 字体为白色,阴影为4,阴影颜色为rgb(63,63,63),无描边

使用爱剪辑加字幕的经验

  • 因为每次爱剪辑新增字幕后格式都要重新调,所以不妨复制已经调整好格式的字幕然后调整时间轴到所需加字幕处粘贴即可。
  • 每次加字幕时均会在视频前加上一个片头,并吃掉一部分结尾,所以在爱剪辑结尾加上一分钟左右的黑屏,最后再用Premiere减掉即可。
  • 人物对话字幕因为出现特效时间长、消失特效时间长不能为零,均设为0.01秒
确定字幕时间
  • 用Adobe Edition依照波形来精确确定时间精确到0.01秒
  • 如果说话之间没有明显停顿,只要确定两句话之间的一个时间点作为这句话的结束和下句话的开始即可
打字效果字幕
  • 确定在时间轴上每句话的开始、结束时间,依次确定字幕逐字出现的特效时长(后者减前者)
  • 确定所有字幕淡出的时间轴时间,并参照时间轴上每句话的结束时间确定字幕停留的特效时间长(前者减后者)
  • 所有字幕的消失特效时间长均相同,1s以下即可
  • 一句话中即使视频里面为一行如果有明显停顿的仍拆分为两个字幕

使用程序批量加人物对话字幕的方法

确定工程文件中的字幕格式

对于人物说话的字幕,由于格式比较固定(字体格式均相同、位置均处于屏幕下方),又发现爱剪辑的工程文件为文本文件,里面的字幕参数直接可以修改,工程文件中字幕为"TextList":[{字幕1},{字幕2}],且每个字幕中只有BeginTimeEndTimeStayEffTimeLenTransformZOrder这些参数要修改:

BeginTime=时间轴上开始秒数*10000000
EndTime=时间轴上结束秒数*10000000
StayEffTimeLen=EndTime-BeginTime-0.02*10000000(0.02秒为出现特效时间长加上消失特效时间长)
Transform确定字幕的位置和其它一些信息,我暂时没看到什么规律
ZOrder为字幕的序号,第一个为-1073741824,之后每个依次加1
将字幕信息存为文本文件

将字幕的信息输入excel后得到如下图


字幕Excel.JPG

然后存为csv文件如下

BeginTime,EndTime,StayEffTimeLen,字幕
431600000,444000000,12200000,他留校之后
444000000,473300000,29100000,就向教育基金会的老师提出了一个想法
476700000,505000000,28100000,能不能把明德奖学金的获得者组织起来
505000000,524400000,19200000,变成一个社团
528000000,538000000,9800000,当时很神奇啊
......
用Python批量生成所有字幕的代码

先在爱剪辑中调整好一句字幕的格式,然后保存成工程文件后从中提取字幕的代码,并依次用Python生成所有字幕的代码
Python程序的作用是依照调整好的字幕格式,根据excel中其他字幕的开始时间、结束时间和字幕本文来生成所有字幕的代码,由于我在Transform参数中没看到什么规律,所有字幕的transform参数均设置相同,所以最终还要调整下字幕的位置
Python代码示例如下(倒数第四行依据工程文件中的字幕代码调整即可,一般来说先设置好一句字幕的格式,然后只需修改下面代码中第四行中"FontSize"和"Transform"的内容)

#!user/bin/env python3
# -*- coding: gbk -*-
BeginTime,EndTime,StayEffTimeLen,Text=[],[],[],[]
outcome=""
lines = open('001.csv')
num=-1073741825
for line in lines:
    BeginTime.append( line.split(',')[0])
    EndTime.append( line.split(',')[1])
    StayEffTimeLen.append( line.split(',')[2])
    Text.append( line.split(',')[3].rstrip())
for i in range(1,len(BeginTime)):
    num+=1
    outcome+='{"Alignment":1,"BeginTime":'+str(BeginTime[i])+',"CharSpacing":1,"Effect":{"InEffRowSpaceTime":0,"InEffTimeLen":100000,"InEffWordSpaceTime":0,"InEffectName":"FadeText","Name":"TextCombination","OutEffRowSpaceTime":0,"OutEffTimeLen":100000,"OutEffWordSpaceTime":0,"OutEffectName":"FadeText","StayEffRowSpaceTime":0,"StayEffTimeLen":'+str(StayEffTimeLen[i])+',"StayEffWordSpaceTime":0,"StayEffectName":"ImageStaticLinear"},"EndTime":'+str(EndTime[i])+',"IsCreateBorderTexture":false,"IsCreateShadowTexture":false,"IsRightToLeft":false,"IsVertical":false,"LayoutType":1,"RowSpacing":0,"SplitType":4,"Style":[{"Alpha":255,"BorderColor":[255,0,0,0],"BorderSize":0,"FontName":"H-冬青黑体传统中文-W3","FontSize":70,"IsBold":false,"IsItalic":false,"IsLucencyText":false,"IsShadowSuccessive":false,"IsStrikeout":false,"IsUnderline":false,"IsVertical":false,"ShadowColor":[255,63,63,63],"ShadowOffsetX":4,"ShadowOffsetY":4,"TextBGImagePath":"","TextColor":[255,255,255,255],"TextColorMode":0,"TextGradientBeginColor":[255,63,63,63],"TextGradientColorAngle":90,"TextGradientEndColor":[255,0,0,0]}],"Text":"'+Text[i]+'","TextureUnitSpacing":1,"Transform":[1,0,0,0,0.99999994039535522,0,693.99993896484375,951.99993896484375,1],"WordSpacing":1,"ZOrder":'+str(num)+'},'
outcome=outcome[0:len(outcome)-1]
f=open('file','w')
f.write(outcome)
将用生成的代码替换工程文件中的字幕代码

用python生成的file文件中的内容替换原始工程文件中"TextList"这个list里面的内容,保存工程文件,然后所有字幕就批量生成了,最后只需要调整字幕位置即可(在爱剪辑中点击字幕中字体设置中的位置,选“中下”位置即可)



作者:kai_hao
链接:https://www.jianshu.com/p/64fa0abd11af
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 你可以使用Python中的moviepy库来实现视频字幕的功能。下面是一个简单的示例代码: ```python from moviepy.editor import * # 载视频和字幕文件 video = VideoFileClip("video.mp4") subtitle = SubtitlesClip("subtitle.srt") # 将字幕文件和视频文件合并 result = CompositeVideoClip([video, subtitle.set_pos(('center', 'bottom'))]) # 保存结果视频 result.write_videofile("result.mp4") ``` 在上面的代码中,我们首先使用VideoFileClip函数载视频文件,并使用SubtitlesClip函数字幕文件。然后,我们使用CompositeVideoClip函数将字幕文件和视频文件合并,并使用set_pos函数将字幕放在视频底部中央。最后,我们使用write_videofile函数保存结果视频。 需要注意的是,字幕文件需要符合SRT格式。如果你的字幕文件不是SRT格式,你可以使用Python中的pysrt库将其转换为SRT格式。 ### 回答2: 要在Python中给视频字幕,可以使用`moviepy`库来实现。首先需要安装`moviepy`库,可以使用`pip install moviepy`命令来进行安装。 接下来的步骤如下: 1. 导入`moviepy`库以及其相关的模块。 ``` from moviepy.editor import * ``` 2. 载视频文件。 ``` video = VideoFileClip("input.mp4") ``` 3. 创建文本字幕对象,并设置字幕内容、字体、字号等相关属性。 ``` text = TextClip("Hello, World!", fontsize=70, color='white', font="Arial-Bold") ``` 4. 将字幕对象与视频对象进行合并。 ``` subtitles = CompositeVideoClip([video, text.set_position(('center', 'bottom')).set_duration(video.duration)]) ``` 5. 输出带有字幕的视频文件。 ``` subtitles.write_videofile("output.mp4") ``` 以上就是使用Python给视频字幕的简单步骤。你可以根据自己的需求修改字幕内容、字体等参数,实现更个性化的效果。 ### 回答3: 要在Python中为视频添字幕,你可以使用一些库和工具来实现。 首先,你可以使用`moviepy`库来处理和编辑视频。这个库支持多种视频格式和功能,包括添字幕。你需要先在Python中安装这个库,然后使用`TextClip`类创建一个包含字幕文字的文本剪辑。 首先,导入`moviepy.editor`和`moviepy.video.tools.drawing`模块。创建一个视频剪辑对象,载视频文件: ```python from moviepy.editor import VideoFileClip from moviepy.video.tools.drawing import TextClip # 载视频文件 video = VideoFileClip("video.mp4") ``` 然后,定义一个函数来创建字幕文本剪辑。设置字幕的内容、字体、字号、颜色等属性。将字幕文本剪辑与视频剪辑合并,并设置字幕剪辑的位置和持续时间。 ```python def create_subtitle(text, font, fontsize, color): # 创建字幕文本剪辑 subtitle = TextClip(text, font=font, fontsize=fontsize, color=color) # 设置字幕文本剪辑的位置和持续时间 subtitle = subtitle.set_position(('center', 'bottom')).set_duration(video.duration) return subtitle # 创建字幕 subtitle = create_subtitle("字幕内容", 'Arial', 30, 'white') # 将字幕文本剪辑与视频剪辑合并 video_with_subtitle = CompositeVideoClip([video, subtitle]) ``` 最后,保存带有字幕的视频剪辑。 ```python # 保存带有字幕的视频剪辑 video_with_subtitle.write_videofile("video_with_subtitle.mp4") ``` 这就是使用Python为视频添字幕的基本过程。你可以根据需要自定义字幕的样式和效果,如设置背景、阴影、透明度等。希望以上内容对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安果移不动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值