2009-09-29 60 views
3

我的Delphi應用程序已經創建了一個名爲frame_001.png的幀序列給frame_100.png。使用Delphi或FFMpeg從圖像序列創建電影

我需要編譯成一個影片剪輯。我想,也許最簡單的就是在命令行中調用的ffmpeg,根據自己的文檔:

For creating a video from many images:

ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi

The syntax foo-%03d.jpeg specifies to use a decimal number composed of three digits padded with zeroes to express the sequence number. It is the same syntax supported by the C printf function, but only formats accepting a normal integer are suitable.

來源:http://ffmpeg.org/ffmpeg-doc.html#SEC5

但是我的文件(無損)png格式,所以我必須使用ImageMagick轉換第一。現在

我的命令行是:

ffmpeg.exe -f image2 -i c:\temp\wentelreader\frame_%05d.jpg -r 12 foo.avi

但後來我得到的錯誤:

[image2 @ 0x133a7d0]Could not find codec parameters (Video: mjpeg) c:\temp\wentelreader\Frame_C:\VID2EVA\Tools\Mencoder\wentel.bat5d.jpg: could not find codec parameters

我在做什麼錯?

或者,這可以很容易地與德爾福完成?

回答

2

查看錯誤消息中的文件名。這不可能是正確的。百分號需要一直到您正在運行的程序,但它會被批處理文件擴展,其中%0將擴展爲文件的全名和路徑。雙倍百分號在批處理文件:

ffmpeg.exe -f image2 -i c:\temp\wentelreader\frame_%%05d.jpg -r 12 foo.avi

而且,你爲什麼要數字,當你已經說過你的文件被命名爲喜歡 frame_001.png,它只有三個數字?

+0

謝謝Rob!現在回想起來很明顯... 我現在得到以下錯誤,嘗試出批處理文件: c:\ temp \ wentelreader \ Frame_%05d.jpg:發生I/O錯誤 通常意思是該輸入文件被截斷和/或損壞。 frame_001。png只是一個例子,我決定稍後引用我的代碼。真正的文件名是Frame_00000.jpg - Frame_03961.jpg。 –

+0

確定更新 - 使用原始PNG,它現在似乎工作。我想我的jpegs路徑不對。 再次感謝! –

2

ffmpeg可以從png圖像創建電影,您爲什麼認爲必須將它們轉換爲jpeg?

+1

我之前有一個錯誤,這讓我認爲在(稀疏!)手冊中沒有提及png。 謝謝,很高興知道。現在,如果我只能找出命令行:) –

+0

與jpeg相同的命令行。 –

+0

png或jpeg不是問題 - 我無法讓命令行工作,因爲它將%0d參數替換爲我從中調用它的批處理文件的名稱。 –

2

DelphiFFMpeg中的夥計們已經生成了FFMpeg的組件包裝。它非常昂貴,但值得對它進行測試。然而,你想要做的事情非常簡單,命令行對你來說已經足夠了。

+0

謝謝,看起來非常強大,請記住。 –