天天看點

如何給FLV檔案加字幕

如何給FLV檔案加字幕

關鍵字:FFMPEG AVS 字幕

          本文隻是收集工作中的一點經驗和積累,如果你能從本文中得到收獲,或者得到啟發。那将是我最開心的事情。

        本文面向的讀者是對FFMPEG以及AVS有一定基礎的,對電腦有一定基礎的,否則你在讀的過程也許會感到比較困難。

  在網上關于FFMPEG加字幕或者水印的文章不要太多,但是很多文章隻是将各種指令給你羅列一堆,直到最後看到你茫然而不知所措,另外就是一些朋友在網上大說自己什麼問題什麼問題解決了啊,開心啊,什麼的。用GOOGLE搜尋一下就能搜尋到,可是當你滿懷希望的去打開的時候,卻發現你要的東西并不是他寫的東西。我就很郁悶:你倒是說說啊,你解決了,别人是替你開心,但是你也說一下,讓别人也開心一下啊,随便BS一下。這種年頭搞這種全開源的東西的技術封鎖有花頭啊,能賺錢嗎?好了,不說了。

  好了,不發牢騷,下面還是說一下正題吧:

  首先說一下,我的工作環境:WINDOWS(而且是WINDWOS下在大多數的版本),FFMPEG,Avisynth2.5.6

  解決的思路:通過AVS腳本實作對大都數檔案的支援,通過VSFilter.dll插件實作對字幕檔案的添加,我使用的SSA格式的純文字字幕,該格式的好處是:檔案小,文字的式樣多,字幕出現的形式、位置等等都比較容易控制,在實際使用中,你可以根據你自己的需求來使用你的字幕格式。

VSFilter.dll支援的字幕格式有很多種:idx、srt、ssa、ass、sub等。

  認識字幕的格式,認識字幕格式對想挂字幕或者說是加水印的來說應該是很重要的一個過程,隻有充分認識了才寫出好的字幕檔案,才能實作你心中的預期效果,我們這裡隻是以ssa檔案為例進行說明:

        [Script Info]

; This is a Sub Station Alpha v4 script.

; For Sub Station Alpha info and downloads,

; go to http://www.eswat.demon.co.uk/

; or email [email protected]

;

; Note: This file was saved by Subresync.

ScriptType: v4.00

Collisions: Normal

PlayResX: 384

PlayResY: 288

Timer: 100.0000

        [V4 Styles]

Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding

Style: SytleCN,simhei,26,&Hffffff,&Hff0000,&Hff0000,&H000000,0,0,0,1,1,2,20,20,20,0,134

Style: mine,Arial,24,&Hffffff,&Hff0000,&Hff0000,&H000000,0,0,0,1,1,2,20,20,20,0,0

        [Events]

Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text

Dialogue: Marked=0,0:00:00.00,0:00:9.99,SytleCN,,0000,0000,0000,,{/pos(50,35)}捷群科技(HTTP://www.jiequn.net)

上面的這一段是截取的一段SSA中的片段,你可以使用字幕的修改編輯軟體來進行修改,常用的字幕的修改和編輯軟體網上有很你,你可以去搜尋一下。本文主要講的是SSA的檔案的格式:

我們看一下:[V4 Styles] 後面的那一段你可以任意的加上你所需要的文字的格式,這樣你可就可以寫出很PP的字幕了。Name對就于後面你在引用時的字型的名稱。Fontname,需要提醒大家注意的:SSA對中文的字型提供的不夠,是以你如果希望使用黑體,那就不能寫成黑體,然是要寫成simhei,其它字型的對應關系如下:(黑體:simhei;宋體:simsun;仿宋:simfang;楷體:simkai;隸書:simli)雖然網上很多地方都沒有寫明,需要這樣設定字型,但是如果你不聽我的勸告,你将不能正确的設定中文字型。還有一點需要提醒你注意的是:“Encoding”,134表示簡體中文的編碼,繁體中文的編碼為136。其它的都是根據上面一項一項對應下來的。MarginL ---字幕距左邊的距離---取值範圍0-PlayResX的數值;MarginR ---字幕距右邊的距離---取值範圍0-PlayResX的數值;VarginV ---字幕高度---取值範圍0-PlayResY的數值。PrimaryColour ---主體顔色---顔色格式為&HXXXXXX,十六進制,X取值為0-f;SecondaryColour ---次要顔色---格式同上,卡拉OK中使用,即變色前的顔,變色後顯示主體顔色;TertiaryColour ---邊框顔色---格式同上;BackColour ---陰影顔色---格式同上

        3.[Events]

從這裡開始就是字幕部分了,以“Dialogue: Marked=0,0:00:00.00,0:00:9.99,SytleCN,,0000,0000,0000,,{/pos(50,35)}捷群科技(HTTP://www.jiequn.net)”這裡是将[v4 Styles]部分中已定義的字型提供給字幕,并能對字型的各屬性重新定義;通過特定的SSA代碼實作特效.

Marked---标記---一般都設為0

Start ---字幕開始時間---格式0:00:00.00最小機關0.01秒

End ---字幕結束時間---格式同上

Style ---字型名稱---引用的是[v4 Styles]部分中的Name項

Name ---名字---注意這個Name和[v4 Styles]部分中的Name完全不同,相當于注釋,一般省略,省略後隻留一逗号.

MarginL---是對[v4 Styles]部分MarginL值的重新設定,0000表示采用原值;若不為零,則代替原值(此時原值不再起作用)

MarginR---是對[v4 Styles]部分MarginR值的重新設定,用法同上

MarginV---是對[v4 Styles]部分MarginV值的重新設定,用法同上

Effect---這裡是SSA為編輯人員友善使用動态效果而自定義的代碼,有Scroll up,Scroll down,Banner和Karaoke四種形式.為集中學習這裡就不作介紹将其放到SSA代碼部分說明.

Text---字幕區---在這裡可以添加代碼改變字型屬性,實作多種特效

        好了,累死了,休息一會兒,相信在看完上面的文章後你應該對SSA的字幕有一定的了解了吧,如果這一步搞定的話那下面的步驟就簡單多了。。

        下一步:如果将字幕加到檔案中去?

當然得是AVS了。打開記事本編寫AVS腳本:

LoadPlugin("VSFilter.dll")

DirectShowSource("待轉換的檔案路徑及檔案名", fps=15, convertfps=true)

TextSub("SSA檔案")

Levels(0,1.2,255,0,255)

看了上在的代碼:第一句就是LoadPlugin("VSFilter.dll"),那就别急了,先到網上去下載下傳VSFilter.dll,當然你也可以到本網上下載下傳。

下載下傳後将檔案複制到你的SYSTEM32目錄下面。

執行指令“regsvr32 VSFilter.dll”完成該DLL檔案的注冊。

好了,到了這裡你可以正确引用VSFilter.dll了。

        下面的事件就是寫一句FFMPEG指令(舉個最簡單的例子:ffmpeg -i XXX.avs -y test.flv)去執行,就可以得到加字幕後的FLV檔案了。

        好了,朋友們去享受AVS給我們帶來的友善吧。由于本文才疏學淺,肯定有說的不到的地方,還請更正(直接在下面留言就可以了)。我将在後面寫一些關于AVS加載别的格式或者水印的文章。

本文如果需要轉載請注明出處:捷群科技(HTTP://www.jiequn.net)

繼續閱讀