【发布时间】:2016-12-01 11:15:11
【问题描述】:
目前我正在使用列表变量来存储相机提供的 BitmapSources,并在 SharpAvi 的帮助下将它们保存为 AVI 文件。在第二步中,我通过Nrecos ffmpeg wrapper 对保存的文件进行编码以减小文件大小。最后我删除了原始的AVI文件,只保留编码的文件。
在我看来,这似乎设计得很糟糕,并且可能会对运行应用程序的 SSD 造成有害的写入周期(我可能每天在未编码的视频中创建多达 TB),这就是为什么我想将其更改为利用 PC 的 RAM 的更集成的解决方案。 然而,SharpAvi 和 Nreco 依赖于创建和读取实际文件。 Nreco 确实有接受流的ConvertLiveMedia 方法 - 但是在我的实验中,它根本没有创建文件,同时没有给我任何错误警告。
【问题讨论】:
-
是否可以使用相机作为 NReco ffmpeg 包装器的输入源?如果相机可作为 DirectShow 设备访问,或者如果流由 URL 提供,您可以这样做。这将是对视频进行转码并保存到文件的最有效方式。
-
我不这么认为。特别是因为我仍然需要能够使用相机在 Aforge 中进行并行图像分析并为用户进行实时预览。通过我提供的解决方案,我认为已经为这个特定用例提供了最佳选择。
-
如果您在 C# 中将帧作为图像(位图对象),您也可以使用 ConvertLiveMedia 方法(使用特殊的“raw_video”格式)将它们直接推送到 ffmpeg 输入。
-
我可以尝试-而不是通过Sharpavi发送它,然后我可以直接将它们发送到convertLivemedia。周一会通知你。但是我只将它们作为 WPF BitmapSources - 而不是 Forms Bitmaps。不知道转换是否会消除这种方法的任何好处。
-
嗨,Daniel,您能否发送将 BitmapSources 保存为 AVI 文件的代码。
标签: c# wpf ffmpeg avi bitmapsource