[英]AForge.NET -> AVIWriter Adding Images as Frames
我想用圖像制作視頻,每個圖像應停留一秒鍾。 AVIWriter具有25幀速率,因此我必須添加一張圖像25次以使其停留一秒鍾。
我嘗試更改幀速率,但無法正常工作。
誰能建議解決方法?
以下是將幀寫入視頻的代碼:
private void writeVideo()
{
// instantiate AVI writer, use WMV3 codec
AVIWriter writer = new AVIWriter("wmv3");
// create new AVI file and open it
writer.Open(fileName, 320, 240);
// create frame image
Bitmap image = new Bitmap(320, 240);
var cubit = new AForge.Imaging.Filters.ResizeBilinear(320, 240);
string[] files = Directory.GetFiles(imagesFolder);
writer.FrameRate = 25;
int index = 0;
int failed = 0;
foreach (var item in files)
{
index++;
try
{
image = Image.FromFile(item) as Bitmap;
//image = cubit.Apply(image);
for (int i = 0; i < 25; i++)
{
writer.AddFrame(image);
}
}
catch
{
failed++;
}
this.Text = index + " of " + files.Length + ". Failed: " + failed;
}
writer.Close();
}
您好,我遇到了同樣的問題,看到此主題已全部閱讀,沒有對http://www.aforgenet.com/framework/docs/html/bc8345f8-8e09-c1a4-4834-8330e5e85605.htm進行評論“應在打開新文件生效之前設置該屬性。”
如果使用以下代碼,則Hakan的解決方案將起作用:
AVIWriter videoWriter;
videoWriter = new AVIWriter("wmv3");
videoWriter.FrameRate = 1;
videoWriter.Open("test.avi", 320, 240);
videoWriter.AddFrame(bitmap1);
videoWriter.AddFrame(bitmap2);
videoWriter.AddFrame(bitmap3);
videoWriter.Close();
每秒顯示一個位圖。 (僅用於給出直接起作用的代碼)。
AVIWriter
的默認幀速率為25。由於您沒有選擇指定丟棄或跳過幀的選項,為什么在開始使用幀填充寫入器之前,為什么不將AVIWriter::FrameRate
屬性設置為1?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.