[英]Recording video in C#
我必须执行以下操作:使用C#从摄像机录制视频。 我使用的相机产生视频帧(帧率不固定),我必须以某种方式将所有帧放在一起并创建视频文件。 另外,我需要使用不同的编解码器,例如AVI或MPEG4(这些编解码器是必需的,其他是可选的)。
我面临的主要问题是如何创建帧率不固定的视频。 我有一帧帧,例如,我可以在1毫秒后接收第一帧,然后在20毫秒后接收,然后是36毫秒,依此类推。 如果我以25帧/秒的速度创建视频,那么结果将是错误的,因为这意味着在40毫秒后添加了帧。
我尝试使用Aforge.Video库,它具有http://www.aforgenet.com/framework/docs/html/84a560df-bfd5-e0d6-2812-f810b56a254d.htm方法,该方法会根据时间跨度添加帧。 但是此方法在设置比特率方面存在问题-我传递给该方法的比特率值被忽略了( http://www.aforgenet.com/forum/viewtopic.php?f=2&t=2665 )。
所以我的问题是:是否有一些C#库可用于录像? 我必须支持AVI和MPEG4,还必须设置比特率,最后但并非最不重要的问题-录制具有可变帧率的视频。
提前致谢。 任何建议将非常有帮助。
UPD1:我无法直接连接到摄像机-我所拥有的只是一帧帧,我需要在运行时将此流转换为视频。
UPD2:我要查找的库应满足以下属性。 它必须包含一种方法(或以某种方式执行相同的操作)以添加带有时间戳的下一帧,就像在Aforge.Video.FFMPEG中一样:
public void WriteVideoFrame(Bitmap frame, TimeSpan timestamp)
并且应该可以选择不同的编解码器(至少是AVI和MPEG4),还可以设置比特率。 有Aforge.Video.FFMPEG的替代方法吗? 由于Aforge无法正常工作-忽略了比特率值,因此也不支持某些编解码器(例如MPEG2)。
UPD3:关于编解码器许可证的另一个问题。 如果使用开放源代码库,我应该担心编解码器许可证吗?
通常,从C#代码用于视频录制的最佳控件API是DirectShow通过DirectShow.NET库。 您选择格式和编解码器,AVI多路复用器作为库存组件提供,并且有第三方替代品。 对于MPEG-4( .MP4
),您需要第三方组件,例如this 。 视频压缩组件通常受第三方过滤器选择的影响。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.