我正在使用 ffmpeg.org当我运行 ffmpeg -y -f vfwcap -r 25 -i 0 out.mp4
在命令行中,我可以从我的网络摄像头中抓取视频并将其写入 out.mp4
文件。但是,我在任何地方都看不到那个流。我想过用 c# 编写一些基于 ffmpeg 功能的简单包装器,到目前为止,我发现 Stack before 上提到的帖子,但是没有关于实时显示数据(而不是将其保存到文件中)。有没有人有这方面的经验?例如,我可以在图片框或其他组件上“绘制”从网络摄像头接收到的数据吗?
谢谢!
最佳答案
您链接帖子中的一条评论是这样说的:
How about writing a C++/CLI wrapper around ffmpeg's native interface and then calling your wrapper interface from your application?
我认为这正是你想要做的。 (请注意,FFmpeg 在 Visual Studio 的最新版本中多年来一直运行良好,因此链接帖子中对此评论的回复不适用。)
您基本上会创建一个摄像头输入(位于 libavdevice 中),然后将其编码为 h264 在 mp4 容器中(参见 output_example.c )。要获得实时显示,您将获取从 vfwcap 源生成的数据,对其进行解码(使用 libavcodec 中的“rawvideo”解码器)。这会给你一个 AVFrame ,它具有数据指针以在应用程序的任何 native UI 元素中显示图像,通常使用 direct3d 或 opengl。阅读 documentation了解更多关于这一切的信息。
关于c# - 有没有办法在 c# 应用程序中使用 ffmpeg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30070097/