有一个IP网络摄像头,我之前写过一个.NET类。它基本上是一个Timer实现,每隔五秒从摄像头ping一次快照CGI脚本。相机本身非常难以捉摸;它没有任何类型的API供我使用,我唯一能以编程方式(远程)调用此脚本。该脚本返回640x480 JPEG图像。简单。
现在我需要做的就是花一些时间来拍摄这些图像,并创建一个“时间流逝”的AVI视频流,最终将其嵌入到网页中。我怎么能用VB.NET做到这一点?
答案 0 :(得分:15)
.net不直接支持视频格式。您最好的选择是使用第三方工具生成.avi。
ffmpeg是一种选择。您可以通过以下命令行直接访问它:
ffmpeg -f image2 -i img%d.jpg /output/a.mpg
您需要为图像命名img1.jpg,img2.jpg等。有关详细信息,请参阅ffmpeg faq。您还应该在常见问题解答中找到有关如何输出不同视频格式的详细信息。
您可以使用Process.Start()从vb开始进程。像这样:
Process.Start("ffmpeg.exe", "-f image2 -i img%d.jpg /output/a.mpg")
您还可以查看ffmpeg-sharp或Tao.FFmpeg,它们是ffmpeg库的.net包装器。我个人没试过,但看起来它可能对你有帮助。
另一种选择是查看具有类似功能的MEncoder。您应该能够为此工具查找类似的命令行。
[相关问题:271003]
答案 1 :(得分:4)
答案 2 :(得分:1)
这是Codeproject的某个人的C#包装器:
http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx
该包装器应该为您提供所需的东西。
答案 3 :(得分: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支持的语法 功能,但只接受一个格式 正常整数是合适的。