之前一直在找怎么為flv文件加上自己的水印,ffmpeg和vhook是在linux下面支持.在windows下面不支持.所以我就選擇用ffmpeg和AviSynth為flv文件加水印.詳細步驟如下:
1 首先當然下載ffmpeg和AviSynth了.具體的地址自己google一下就能找到很多.這里就不再詳細介紹了.
一般情況ffmpeg下載后解壓到c盤根目錄后就可以了.包含3個文件
ffplay.exe
ffmpeg.exe
pthreadGC2.dll
那AviSynth下載后只需要在windows下面安裝一下就可以了.
2 建議1.avs文件
video = DirectShowSource("C:/ffmpeg/1.flv",15).BilinearResize(320,240)
logo = ImageSource("C:/ffmpeg/logo.jpg")
logomask= ImageSource("C:/ffmpeg/logo.jpg")
overlay(video,logo,mask=logomask)
注:實際上我在執行命令是要求logo和logomask的規格大小必須相同.在這里我為了簡便用了同一張圖片
下面是對1.avs內容的解釋:
video為視頻源文件路徑;
logo為水印上層文件;
logomash為水印下層文件;
overlay()為覆蓋函數;
?
3 執行ffmpeg命令為1.flv添加水印
命令解釋下面的紅色部分為你要指定的1.avs的路徑 輸出文件路徑為加水印后的文件路徑
?
ffmpeg -y -i "Avs文件路徑"? -ab 56 -ar 22050 -b?800000 -r 15 "輸出文件路徑"
?
針對此例的命令如下:
ffmpeg -y -i "C:/AviSynth/1.avs"? -ab 56 -ar 22050 -b?800000 -r 15 "C:/AviSynth/1.flv"
?
?
**********************************************************
ffmpeg 命令詳解
?
?
基本選項: | |
---|---|
-formats | 輸出所有可用格式 |
-f fmt | 指定格式(音頻或視頻格式) |
-i filename | 指定輸入文件名,在linux下當然也能指定:0.0(屏幕錄制)或攝像頭 |
-y | 覆蓋已有文件 |
-t duration | 記錄時長為t |
-fs limit_size | 設置文件大小上限 |
-ss time_off | 從指定的時間(s)開始, [-]hh:mm:ss[.xxx]的格式也支持 |
-itsoffset time_off | 設置時間偏移(s),該選項影響所有后面的輸入文件。該偏移被加到輸入文件的時戳,定義一個正偏移意味著相應的流被延遲了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持 |
-title string | 標題 |
-timestamp time | 時間戳 |
-author string | 作者 |
-copyright string | 版權信息 |
-comment string | 評論 |
-album string | album名 |
-v verbose | 與log相關的 |
-target type | 設置目標文件類型("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ...) |
-dframes number | 設置要記錄的幀數 |
視頻選項: | |
-b | 指定比特率(bits/s),似乎ffmpeg是自動VBR的,指定了就大概是平均比特率 |
-vb | 指定視頻比特率(bits/s) |
-vframes number | 設置轉換多少楨(frame)的視頻 |
-r rate | 楨速率(fps) |
-s size | 分辨率 |
-aspect aspect | 設置視頻長寬比(4:3, 16:9 or 1.3333, 1.7777) |
-croptop size | 設置頂部切除尺寸(in pixels) |
-cropbottom size | 設置底部切除尺寸(in pixels) |
-cropleft size | 設置左切除尺寸 (in pixels) |
-cropright size | 設置右切除尺寸 (in pixels) |
-padtop size | 設置頂部補齊尺寸(in pixels) |
-padbottom size | 底補齊(in pixels) |
-padleft size | 左補齊(in pixels) |
-padright size | 右補齊(in pixels) |
-padcolor color | 補齊帶顏色(000000-FFFFFF) |
-vn | 取消視頻 |
-vcodec codec | 強制使用codec編解碼方式('copy' to copy stream) |
-sameq | 使用同樣視頻質量作為源(VBR) |
-pass n | 選擇處理遍數(1或者2)。兩遍編碼非常有用。第一遍生成統計信息,第二遍生成精確的請求的碼率 |
-passlogfile file | 選擇兩遍的紀錄文件名為file |
-newvideo | 在現在的視頻流后面加入新的視頻流 |
? | |
高級視頻選項 | |
-pix_fmt format | set pixel format, 'list' as argument shows all the pixel formats supported |
-intra | 僅適用幀內編碼 |
-qscale q | 以<數值>質量為基礎的VBR,取值0.01-255,約小質量越好 |
-loop_input | 設置輸入流的循環數(目前只對圖像有效) |
-loop_output | 設置輸出視頻的循環數,比如輸出gif時設為0表示無限循環 |
-g int | 設置圖像組大小 |
-cutoff int | 設置截止頻率 |
-qmin int | 設定最小質量 |
-qmax int | 設定最大質量 |
-qdiff int | 量化標度間最大偏差 (VBR) |
-bf int | 使用frames B 幀,支持mpeg1,mpeg2,mpeg4 |
音頻選項: | |
-ab | 設置比特率(單位:bit/s,也許老版是kb/s) |
-aframes number | 設置轉換多少楨(frame)的音頻 |
-aq quality | 設置音頻質量 (指定編碼) |
-ar rate | 設置音頻采樣率 (單位:Hz) |
-ac channels | 設置聲道數 |
-an | 取消音頻 |
-acodec codec | 指定音頻編碼('copy' to copy stream) |
-vol volume | 設置錄制音量大小(默認為256) |
-newaudio | 在現在的音頻流后面加入新的音頻流 |
字幕選項: | |
-sn | 取消字幕 |
-scodec codec | 設置字幕編碼('copy' to copy stream) |
-newsubtitle | 在當前字幕后新增 |
-slang code | 設置字幕所用的ISO 639編碼(3個字母) |
Audio/Video 抓取選項: | |
-vc channel | 設置視頻捕獲通道(只對DV1394) |
-tvstd standard | 設置電視標準 NTSC PAL(SECAM) |
?
同時附上了flv文件的一些轉化命令,1.mp4轉化為 1.flv
ffmpeg -i "1.mp4" -y -ab 32 -ar 22050 -b 800000 -s 640*480 1.flv
抓取縮位圖1.jpg:
ffmpeg -i "1.flv" -y -f image2 -t 1 -s 300*200 "1.jpg"