【问题标题】:How to convert video files to H.264 in C#如何在 C# 中将视频文件转换为 H.264
【发布时间】:2015-10-16 08:48:31
【问题描述】:

我搜索了如何在 C# 中完成此操作,但没有任何运气。我要归档的是一个接受视频文件并将其转换为 H.264 的程序。以下是您可以交互执行此操作的页面示例:

http://www.ofoct.com/video-converter/convert-to-h-264-video.html

问题: 如何在 .NET 中创建一个程序,该程序可以执行与我共享的主页类似的操作?非常感谢任何帮助或输入,谢谢!

编辑: 我想这样做的原因是因为完成后似乎视频可以在 iOS 和 Android 设备上播放,也许还有另一种方法可以确保视频可以在 iOS 和 Android 上播放?

再次编辑: 假设我在手机 Android/iOS 上拍摄视频,现在我正在使用 ASP.NET Web api,我想在存储到 Azure 之前将这些电影转换为 H.264,这可能吗?如果是这样,任何关于如何的指示?

【问题讨论】:

    标签: c# .net asp.net-web-api h.264


    【解决方案1】:

    有一个可用的包装器http://www.ffmpeg-csharp.com/

    重点是没有人会编写编码器,因为它在 .NET 中会很慢

    【讨论】:

      【解决方案2】:

      编码/解码由操作系统通过 Direct Show(过去)或 Microsoft Media Foundation 提供。例如,微软媒体基金会已经包含了一个[H.264 Video Encoder](H.264 Video Encoder)。

      SDK 适用于 C++,Microsoft 尚未发布包装器。但是有可用的包装器项目,例如。 MF.Net, DirectShow.NET, WindowsMedia.NET 虽然它自 2012 年以来没有任何活动。

      StackOverflow 中也有类似的问题,提出了其他选项,例如使用 Microsoft 的 Encoder,尽管 H.264 支持仅在 Pro 版本中提供

      【讨论】:

      • 您需要编码多少个文件?如果您有很多文件,那么使用 Amazon 和 Azure 提供的编码服务可能会比在本地运行更便宜。另一方面,如果视频来自相机,您可能可以使用其他 API 直接对视频进行编码。
      • 我是这一切的初学者,我所做的是我创建了一个 asp.net web api,让我可以将图像从设备上传到 azure blob 存储。现在我还想将视频文件上传到 azure blob 存储。我注意到这些视频的首选格式是 H.264,这意味着我需要以某种方式将它们转换为它,所以我的目标是让 web-api 接受视频文件,然后在上传之前以某种方式对其进行转换这会定期发生,但当时只有一个文件。你会如何解决这个问题?
      • 我必须问,当你说,如果视频来自相机(他们这样做)我可以直接编码?你的意思是编码可以在设备内以某种方式发生,还是?这确实意味着,在捕获视频时或获取视频后
      • @AkmalSalikhov 不,因为那是不是 .NET 的工作。对于播放,这是操作系统或浏览器的工作。对于视频处理,这是第三方库的工作。
      • 很好的解释。
      【解决方案3】:

      唯一可行的方法是调用编码应用程序,例如ffmpeg

      【讨论】:

      • 错了。媒体服务由操作系统通过 Direct X 和其他服务提供。 H.264 已经可用
      • @PanagiotisKanavos 怎么了?我说唯一可行的方法,不是唯一的方法。 Media Foundation 在托管语言中使用起来非常复杂,并且高度依赖于平台。问题是关于编码而不是播放。
      • 这是错误的。在 ffmpeg 之前,Windows 中提供了视频编码应用程序、编辑器和游戏。较新的应用程序也不捆绑 ffmpeg。
      • @PanagiotisKanavos 我清楚地说 SUCH AS ffmpeg 为例。没有用 C# 编写的编码应用程序,因为它太慢了。
      【解决方案4】:

      我不确定这是你需要的,但你可以下载一个名为

      的 nuget

      NR.VideoConverter :> 那么你可以编写这段代码来转换视频的类型 就像从 mp4 到 mvo 或任何我不确定什么是 h264 但当我想更改我的视频时我确实找到了它所以它可以帮助你

         var converter = new NReco.VideoConverter.FFMpegConverter();
                  converter.ConvertMedia(FilePath, FilePath, NReco.VideoConverter.Format.h264);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-22
        • 1970-01-01
        • 2017-05-21
        • 2018-02-06
        • 1970-01-01
        • 1970-01-01
        • 2022-02-09
        • 2020-11-23
        相关资源
        最近更新 更多