如何給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 kotus@eswat.demon.co.uk
;
; 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]
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)”這里是將[v4 Styles]部分中已定義的字體提供給字幕,并能對字體的各屬性重新定義;通過特定的SSA代碼實現特效.
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
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)
關鍵字: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 kotus@eswat.demon.co.uk
;
; 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]
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)”這里是將[v4 Styles]部分中已定義的字體提供給字幕,并能對字體的各屬性重新定義;通過特定的SSA代碼實現特效.
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
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)