从一系列图像中创建视频流(AVI)

12

我曾经为一款IP网络摄像头编写了一个.NET类。这基本上是一个计时器实现,每五秒钟向摄像头的快照CGI脚本发送一个ping请求。摄像头本身非常简陋。它没有任何可以供我使用的API,我唯一能够通过程序(远程)执行的操作就是调用此脚本。该脚本返回一个640x480的JPEG图像。很简单。

现在我需要能够将一整天的这些图像拼接成一个“时间流逝”的AVI视频流,并最终将其嵌入到网页中。我该如何使用VB.NET完成这个任务?


2
请查看此项目:http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx - Hans Passant
不错啊!你是来自 MSDN 论坛的 nobugz 吗? - Josh Stodola
4个回答

14

.net不直接支持视频格式。您最好的选择是使用第三方工具生成.avi文件。

ffmpeg是其中之一。您可以通过命令行直接访问它,如下所示:

ffmpeg -f image2 -i img%d.jpg /output/a.mpg

您需要将图片命名为img1.jpg,img2.jpg等。更多详细信息请参见ffmpeg faq。您还可以在faq中找到有关如何输出不同视频格式的详细信息。

您可以使用Process.Start()从vb启动进程。类似这样:

Process.Start("ffmpeg.exe", "-f image2 -i img%d.jpg /output/a.mpg")

你也可以看看ffmpeg-sharpTao.FFmpeg, 它们是FFmpeg库的.NET封装。我个人没有尝试过,但它看起来可能会对你有所帮助。
另一个选择是看看MEncoder, 它具有类似的功能。你应该能够查找到类似的命令行工具。
[相关SO问题: 271003]

看起来是个不错的解决方案。我本来希望有一个库可用,但是可以启动这个独立进程也没问题。 - Josh Stodola
@Josh。我已经添加了一些包装库的链接,你可能想要查看一下。 - Simon P Stevens
ffmpeg-sharp无法编译,我找不到任何地方下载Tao.FFmpeg。 - Josh Stodola
我想我会自己启动这个进程。我之前用过LAME MP3音频编码器,所以对它有一定的了解。 - Josh Stodola
TAO的下载链接在这里:http://sourceforge.net/projects/taoframework/,但如果您习惯使用命令行,那可能是最简单的方式。 - Simon P Stevens

4

1

啊,当我回答这个问题时它还没有出现(我还没有刷新页面)。 - Crowe T. Robot

0

有几个命令行工具可以接收一系列图像并输出AVI文件。我建议您从应用程序中调用其中之一。

我可以提供建议的链接,但是我已经多年没有使用过了。

编辑:显然您可以使用ffmpeg来完成此操作:http://ffmpeg.org/ffmpeg-doc.html

用多张图片创建视频:

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

foo-%03d.jpeg语法指定使用由三个数字组成的十进制数,前导零用于表示序列号。这与C printf函数支持的语法相同,但只适用于接受普通整数的格式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接