【发布时间】:2011-10-03 05:08:26
【问题描述】:
我想用图片制作视频,每张图片都应该停留一秒钟。 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();
}
【问题讨论】:
-
将相同的帧添加 25 次后,您会得到什么?
-
AVI 作为容器格式既适用于 1 fps 帧速率,也适用于空帧/丢失帧。如果您能找到一种方法来为您的帧(例如帧#0,然后是帧#25)加上时间戳并将其推送到这个库中,AVI API 会自动将丢失的帧添加为空帧,并且生成的文件将以 1 fps 的速度播放。
-
@box86rowh 当我添加相同的帧 25 次并且速率为 20 帧时,该帧会停留一秒钟。当我将帧速率降低到 20 并添加 20 帧时,每个帧停留的时间不到一秒。
-
@Inuyasha 我贴了视频加帧的相关代码......
标签: c# image video photo video-encoding