fcpx快速添加字幕 | final cut pro导入fcpxml字幕文件与视频时间对不上?我用代码搞定了

简介: fcpx快速添加字幕 | final cut pro导入fcpxml字幕文件与视频时间对不上?我用代码搞定了

点击观看视频课程 ↓↓↓image.png

点击链接查看原视频

https://blog.csdn.net/shine_a/article/details/105332694?spm=1001.2014.3001.5502


首先只导出视频的语音mp3文件,注意导出的语音文件不要有背景音乐


再将这个文件导入到网易见外工作台这个网站里面,调整错误之后,我们就能得到一个srt字幕文件


然后用网站将srt文件转成fcpxml文件,导入到fcp里面,一直到这一步都很顺利


但是后面,我将字幕粘贴到项目中的时候,发现这些字幕都没有对齐,每条字幕都好像长了一点


image.png


并且切换字幕的时候,有重叠


image.png


并且是那种一开始能对的上,越往后时间误差越大的那种,要是都对不上,我还可以统一拖动字幕,现在这样需要我一个一个去对时间,太麻烦了


但是,我们程序员不是吃素的,这种批量处理的问题可以用代码解决的~~


于是我打开了fcpxml字幕文件,分析了一下他的源码,果然让我找到了解决的方法!


具体分析过程我就不说了,我是花了一天半的时间分析出来的。。直接跟大家说说时间对不上的原因吧


就是我们导出的字幕里面,结尾和开头都是一样的时间,这样在视频中,在同一个时间上面,就会有两个字幕帧


image.png


这样每条字幕的长度都长出了一帧,然后导致后面的误差越来越大

我们需要将每个字母的时间都缩短一帧的长度,这样字幕就正确了,就是将fcpxml文件中的duration字段后面的数字减掉100,比如


//原先
 duration="2700/3000s"
//修改后
 duration="2600/3000s"


你不是程序员的话,可以直接粘贴我的代码,不需要安装其他软件,直接跟着我一步步操作就可以


我们先将这个fcpxml字幕文件复制一下,重命名为new文件,并将原始的字幕文件重命名为old


image.png


在来拿到old这个文件的路径,右键点击这个文件,点击显示简介,这个位置就是路径,我们复制一下


image.png


来到应用程序里面打开终端,粘贴路径,粘贴下来可能与显示的不太一样,变成英文的格式,就是像是这样,这里的用户就会变成User


image.png


接下来我们用Ruby语言来解决,苹果电脑上面都会自动安装ruby环境的,如果你不确定是否有这个环境,可以输入ruby -v检查一下,-v前面有个空格,如果出现了版本号,就说明有ruby环境,可以跟着我进行下面的操作了


~$ irb
2.2.1 :001 >


接下来我们来定义一个路径,这个路径替换成你刚刚复制的old.fcpxml文件的路径


~$ path = "/Users/xuzhaoning/Downloads"


接下来复制下面的代码


#第一次复制的代码
text = File.read("#{path}/old.fcpxml")
f = File.open("#{path}/old.fcpxml", "r")
f.each_line do |line|
  m_duration = line.match(/duration.{2}(\d*)\/3000s.{1}/)
  if m_duration && m_duration[1]
    m_duration_num = m_duration[1].to_i
    if m_duration_num > 100
    m_duration_num = m_duration_num - 100
    end
    m_duration_true = m_duration[0].gsub(m_duration[1],m_duration_num.to_s)
    puts "===m_duration=========#{m_duration[0]}======"
    puts "===m_duration_true=========#{m_duration_true}======"
    text = text.gsub(m_duration[0],m_duration_true)
  end
end


会打印出一些信息,m_duration_true后面的数字总是比上一行m_duration后面的数字小100,就说明代码运行成功了


接下来我们再复制下面的代码,将改正之后的字幕导入到new.fcpxml文件中


#第二次复制
path2 = "#{path}/new.fcpxml"
file = File.open(path2,"w")
file.write(text)
file.close


运行完成后,我们再将这个new.fcpxml文件导入到fcp中,现在字幕就与视频的时间是一致的了。


如果字幕比较少的话,也可以在fcpxml文件中手动修改duration这个数值,要注意的是,这个值只能是100的倍数,不能是50 55这样的数字


我们字幕的问题这样就解决啦,所以大家好好学着写代码吧,不仅能用来写项目,也能解决很多日常的问题,加油~~


目录
相关文章
|
5月前
|
JavaScript 前端开发
文本,粘贴事件如何实现,先实现一个小目标,如何存入图片,从本地生成源码,先转成base64,ctrl + v这张图片就显示出来了怎样实现的,Vue可以有方法可以获取粘贴的所有元素,转base64字符串
文本,粘贴事件如何实现,先实现一个小目标,如何存入图片,从本地生成源码,先转成base64,ctrl + v这张图片就显示出来了怎样实现的,Vue可以有方法可以获取粘贴的所有元素,转base64字符串
|
7月前
分享:批量多目录图片如何转换PDF,一次性转换多级目录批量的PDF的转换,合并,输出另存等问题,图片转PDF文件,批量图片转PDF文件,多级目录的图片转PDF文件,并且保存到不同的地方,全部搞定
本文介绍了如何高效地将图片转换为PDF,包括单张、多张及多级目录下的图片转换和合并。提供了软件下载链接(百度网盘、腾讯云盘),软件操作简便,支持保存原目录或自定义新目录。转换选项包括单个文件、多个文件夹单独转换以及合并转换。用户可通过双击路径访问源图片和转换结果。该工具特别解决了多级目录图片批量转换的难题,实现保存地址的自由设定,满足不同业务需求。
437 0
|
7月前
|
前端开发 Java Maven
springboot优雅的实现excel的导出(自适应列宽实现,中文也行),复制可用
springboot优雅的实现excel的导出(自适应列宽实现,中文也行),复制可用
282 0
|
数据可视化
新建论文三线表模板,一键格式刷(包含word和latex版本)
新建论文三线表模板,一键格式刷(包含word和latex版本)
737 0
|
缓存 Python
【python脚本】word批注状态批量提取器V1版本
【python脚本】word批注状态批量提取器V1版本
133 0
|
人工智能 文字识别 JavaScript
一张截图生成iPhone应用、还能转成代码、创建网站,升级后谷歌Bard真成了
一张截图生成iPhone应用、还能转成代码、创建网站,升级后谷歌Bard真成了
139 0
|
Go
Golang 基础案例集合:中文拼音转换、解析二维码、压缩 zip、执行定时任务
曾经,因为不够注重基础吃了好多亏。总是很喜欢去看那些高大上的东西,却忽略了最基本的东西。然后会错误的以为自己懂的很多,但是其实是沙堆中筑高台,知道很多高大上的架构,但是基础的东西却不太了解。我觉得,可
260 0
老版本word文档打开文字重叠、重影解决方法
老版本word文档打开文字重叠、重影解决方法
223 0
|
Web App开发 开发者
GNE v0.04版更新,支持提取正文图片与源代码
GNE v0.04版更新,支持提取正文图片与源代码
160 0