c# - 有没有办法在 c# 应用程序中使用 ffmpeg?

标签 c# video ffmpeg video-streaming

我正在使用 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/

相关文章:

android - Vitamio ffmpeg版

android webview 不使用 WebViewClient 显示视频

iphone - 如何将视频添加到 iPhone 应用程序

C# 9 - 使用 Entity Framework 更新记录的仅初始化属性

c# - 如何使用 Webdriver 和 C# 通过 Selenium 定位并单击嵌套在多个框架和框架集中的元素

android - 如何在android中应用视频过滤?

FFMPEG 用于下载时失真的视频缩略图

ffmpeg - 向ffmpeg m3u8文件添加标签的问题

c# - 如何像在 excel 列中一样创建字母表

c# - 为什么编译器不喜欢隐式转换为 uint?