簡體   English   中英

AForge.NET-> AVIWriter將圖像添加為框架

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM