用FFmpeg從視頻截取任意一幀圖片的解決辦法~
??? 在我的另一篇日志中,說到利用FFmpeg從視頻截圖的命令,那天在找從視頻截取指定幀的圖片的辦法,這么多天沒有進展,原來我從網(wǎng)上找的關于FFmpeg的參數(shù)命令列表并不全,少了-ss這么一個參數(shù).于是這個問題也到現(xiàn)在才解決.
??? 今天利用FFmpeg -h > ffmpeg.txt,把FFmpeg的命令打印出來后,才發(fā)現(xiàn)了這一參數(shù):
-ss time_off set the start time offset
使用-ss參數(shù),可以從指定的時間開始處理轉(zhuǎn)換任務.如:
ffmpeg -i test2.asf -y -f image2 -ss 08.010 -t 0.001 -s 352x240 b.jpg
那么從任意一幀截圖的問題也就解決了.只要-ss后的時間參數(shù)是隨機產(chǎn)生,并且在視頻的有效時間內(nèi),就可以了.
?另外,-ss后跟的時間單位為秒。
2006-06-27?補充:
另外,通過指定 - ss,和 - vframes也可以達到同樣的效果。
這時候 - ss參數(shù)后跟的時間有兩種寫法,hh:mm:ss?或?直接寫秒數(shù)?:
ffmpeg? - i?test.asf? - y? - f??image2?? - ss? 00 : 01 : 00 ? - vframes? 1 ??test1.jpg
or
ffmpeg? - i?test.asf? - y? - f??image2?? - ss? 60 ? - vframes? 1 ??test1.jpg
這樣輸出的圖片是相同的。
posted on 2006-01-17 10:55 YAO.NET℡ 閱讀(547) 評論(8) ?編輯?收藏收藏至365Key 所屬分類: FFMPEG
評論
?
#?re: 用FFmpeg從視頻截取任意一幀圖片的解決辦法~ 2006-06-19 13:42 sducnli
高手能不能告訴我怎么用asp來執(zhí)行這個ffmpeg
應該用什么版本?我用asp弄了很久沒有弄出來希望能聯(lián)系我一下
我QQ:80471
謝謝了??回復??
#?re: 用FFmpeg從視頻截取任意一幀圖片的解決辦法~2006-06-19 15:55 YAO.NET℡
@sducnli
asp的話你需要了解WSH,原理類似asp解壓縮rar文件,這個程序在網(wǎng)上能下載到,我以前用過的解壓縮代碼如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
'=============================程序準備===============================
'cmd.exe是win2000的內(nèi)置命令文件,在\winnt\system32目錄中
'winrar.exe是WinRAR的核心程序
'=============================程序開始===============================
Dim Cmd_path,Target_path,Source_path,Shell,Str_cmd,Output
Cmd_path=Server.MapPath("cmd_file")
'rar.exe,cmd.exe的存放路徑
Source_path=Server.MapPath("test.rar")
'要解壓的文件及其路徑
Target_path=Server.MapPath(".")
'解壓后的目錄
Set Shell=Server.Createobject("Wscript.Shell")
'關于什么是WSH可參考微軟網(wǎng)站:
'http://www.microsoft.com/china/technet/columns/scripts/sg1002.asp
'http://www.microsoft.com/china/technet/windows2000/whitebook/scrphost.asp
Str_cmd=Cmd_path & "\cmd.exe /c " & Cmd_path & "\winrar.exe x -o+ -p- "
'cmd.exe帶/c參數(shù)是指執(zhí)行字符串指定的命令后終止。
'winrar.exe所帶的參數(shù)"x -o+ -p-"分別指"以完整路徑名稱從壓縮文件解壓、覆蓋已存在的文件、不詢問密碼"。
'更多Winrar參數(shù)/開關在Winrar的幫助中有非常詳細的說明。
Str_cmd=Str_cmd & Source_path & " " & Target_path
'Response.Write(Str_cmd)
Output=Shell.run(Str_cmd,1,true)
If Output = 0 Then
Response.write("解壓成功!")
Else
Response.write("解壓失?。?)
End If
%>?