點擊觀看視頻課程 ↓↓↓
fcpx快速添加字幕 | final cut pro導入fcpxml字幕文件與視頻時間對不上?教你一招搞定
大家好,我是寧一,這段時間我升級了剪輯視頻的設備,從iMovie升級成了fcpx,花了我10頓火鍋、100頓麻辣燙的錢,這樣想想怎麼莫名的有點心疼。。
主要是想要提高一下自己製作視頻的質量,最主要的想要給視頻加上字幕,但是做字幕的時候把我卡住了,導入fcpxml字幕文件與視頻時間的對不上
接下來給大家演示一下製作字幕的步驟,並展示一下問題以及我的解決方法
首先只導出視頻的語音mp3文件,注意導出的語音文件不要有背景音樂
再將這個文件導入到網易見外工作臺這個網站裏面,調整錯誤之後,我們就能得到一個srt字幕文件
然後用網站將srt文件轉成fcpxml文件,導入到fcp裏面,一直到這一步都很順利
但是後面,我將字幕粘貼到項目中的時候,發現這些字幕都沒有對齊,每條字幕都好像長了一點
並且切換字幕的時候,有重疊
並且是那種一開始能對的上,越往後時間誤差越大的那種,要是都對不上,我還可以統一拖動字幕,現在這樣需要我一個一個去對時間,太麻煩了
但是,我們程序員不是吃素的,這種批量處理的問題可以用代碼解決的~~
於是我打開了fcpxml字幕文件,分析了一下他的源碼,果然讓我找到了解決的方法!
具體分析過程我就不說了,我是花了一天半的時間分析出來的。。直接跟大家說說時間對不上的原因吧
就是我們導出的字幕裏面,結尾和開頭都是一樣的時間,這樣在視頻中,在同一個時間上面,就會有兩個字幕幀
這樣每條字幕的長度都長出了一幀,然後導致後面的誤差越來越大
我們需要將每個字母的時間都縮短一幀的長度,這樣字幕就正確了,就是將fcpxml文件中的duration字段後面的數字減掉100,比如
//原先
duration="2700/3000s"
//修改後
duration="2600/3000s"
你不是程序員的話,可以直接粘貼我的代碼,不需要安裝其他軟件,直接跟着我一步步操作就可以
我們先將這個fcpxml字幕文件複製一下,重命名爲new文件,並將原始的字幕文件重命名爲old
在來拿到old這個文件的路徑,右鍵點擊這個文件,點擊顯示簡介,這個位置就是路徑,我們複製一下
來到應用程序裏面打開終端,粘貼路徑,粘貼下來可能與顯示的不太一樣,變成英文的格式,就是像是這樣,這裏的用戶就會變成User
接下來我們用Ruby語言來解決,蘋果電腦上面都會自動安裝ruby環境的,如果你不確定是否有這個環境,可以輸入ruby -v檢查一下,-v前面有個空格,如果出現了版本號,就說明有ruby環境,可以跟着我進行下面的操作了
~$ ruby -v
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin14]
如果沒有的話,可以找身邊的程序員朋友,給他我接下來粘貼的代碼,幫你轉換一下哦~~
當然別忘了給人家發一個紅包,畢竟程序員都是很忙滴~~~
我們在終端輸入irb,前面會變成序號加一個向右的箭頭,現在就進入了代碼編輯的狀態
~$ 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這樣的數字
我們字幕的問題這樣就解決啦,所以大家好好學着寫代碼吧,不僅能用來寫項目,也能解決很多日常的問題,加油~~