【问题标题】:Is there a way of using ffmpeg in c# app?有没有办法在 c# 应用程序中使用 ffmpeg?
【发布时间】:2015-07-16 04:45:03
【问题描述】:

我正在使用ffmpeg.org,当我在命令行中运行ffmpeg -y -f vfwcap -r 25 -i 0 out.mp4 时,我可以从我的网络摄像头中抓取视频并将其写入out.mp4 文件。但是,我在任何地方都看不到那个流。我想过在 c# 中编写一些基于 ffmpeg 功能的简单包装器,到目前为止,我发现Stack before 上提到的帖子,但是没有任何关于实时显示数据的内容(而不是将其保存到文件中)。有没有人有这方面的经验?例如,我可以在图片框或其他组件上“绘制”从网络摄像头接收到的数据吗? 谢谢!

【问题讨论】:

    标签: c# video ffmpeg video-streaming


    【解决方案1】:

    您链接帖子中的一个 cmets 说:

    如何围绕 ffmpeg 的本机接口编写 C++/CLI 包装器 然后从您的应用程序调用您的包装器接口?

    我认为这正是您想要做的。 (请注意,FFmpeg 在 Visual Studio 的最新版本中多年来一直运行良好,因此链接帖子中对此评论的回复不适用。)

    您基本上会创建一个摄像头输入(位于 libavdevice 中),然后将其编码为 h264 在 mp4 容器中(参见 output_example.c)。要获得实时显示,您将获取从 vfwcap 源生成的数据,对其进行解码(使用 libavcodec 中的“rawvideo”解码器)。这为您提供了一个AVFrame,它具有数据指针,可以在应用程序的任何本机 UI 元素中显示图像,通常使用 direct3d 或 opengl。阅读documentation 以了解有关这一切的更多信息。

    【讨论】:

      【解决方案2】:

      您可以使用MediaElementMediaPlayer 控件。

      MediaElement 是 Layout 支持的 UIElement,可以 作为许多控件的内容使用。它也可用于 可扩展应用程序标记语言 (XAML) 以及代码。 另一方面,MediaPlayer 是为绘图对象和 缺乏布局支持。使用 MediaPlayer 加载的媒体只能是 使用 VideoDrawing 或直接与 绘图上下文。 MediaPlayer 不能在 XAML 中使用。

      • 媒体元素

      XAML 示例:

      <MediaElement Source="path\to\out.mp4" Name="myMediaElement" 
           Width="450" Height="250" LoadedBehavior="Manual" UnloadedBehavior="Stop" Stretch="Fill" 
           MediaOpened="Element_MediaOpened" MediaEnded="Element_MediaEnded"/>
      
      • 媒体播放器
          // 
          // Create a VideoDrawing. 
          //      
          MediaPlayer player = new MediaPlayer();
      
          player.Open(new Uri(@"sampleMedia\xbox.wmv", UriKind.Relative));
      
          VideoDrawing aVideoDrawing = new VideoDrawing();
      
          aVideoDrawing.Rect = new Rect(0, 0, 100, 100);
      
          aVideoDrawing.Player = player;
      
          // Play the video once.
          player.Play();       
      

      Multimedia Overview on MSDN

      【讨论】:

      • 谢谢,这是一个好的开始,但是我想放实时视图而不是out.mp4,你知道我该如何更改源标签吗?
      猜你喜欢
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 2014-09-09
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多