【问题标题】:Is it possible to stream the output of an ffmpeg command to a client with dot net core?是否可以将 ffmpeg 命令的输出流式传输到具有 dot net core 的客户端?
【发布时间】:2021-03-11 19:03:04
【问题描述】:

我正在尝试拍摄两个视频并使用 ffmpeg 将它们转换为一个视频。如果您拍摄这两个视频,通过 ffmpeg 运行它们,然后通过 API 提供该文件,效果会很好。不幸的是,这些视频的上限约为 20 分钟,而这种方法需要很长时间才能创建完整的视频(约 30 秒 w/超快)。

我有一个想法,将 ffmpeg 命令的输出流式传输到客户端,这样就无需等待 ffmpeg 创建整个视频。我试图自己证明这一点,但并没有取得太大的成功。这可能是我对流的缺乏经验,或者这可能是不可能的。

有谁知道我想流式传输 ffmpeg 正在进行的输出的想法是否可行/可行?

【问题讨论】:

  • “我正在尝试拍摄两个视频并使用 ffmpeg 将它们转换为一个视频。” 显示您的命令和完整的日志。可能有更快的方法来做到这一点。
  • 是的,这是可能的——只需一点代码......已经有一篇好文章on using FFMPEG in .NET
  • @llogan 这是我编写的将 4 个视频组合在 2x2 网格中播放的命令:.\ffmpeg.exe -i .\input1.mp4 -i .\input2.mp4 -i .\input3.mp4 -i ./input4.mp4 -filter_complex "[0:v][1:v]hstack=inputs=2[row1]; [2:v][3:v]hstack=inputs=2[row2]; [row1][row2]vstack=inputs=2[outv]" -map "[outv]" -preset ultrafast out.mp4
  • 您要使用哪种输出协议?你需要支持什么格式?客户端是本地的还是联网的?
  • 不确定输出协议指的是什么,但我希望输出文件是 mp4。客户端已联网,我想以某种方式将 ffmpeg 的进行中输出流式传输到客户端。我的 stream-foo 还不够先进,无法知道您是否可以这样做

标签: asp.net-core .net-core video ffmpeg video-streaming


【解决方案1】:

您应该检查 hangfire。我用它在后台运行进程,如果它需要通知,signalR 会帮助你

【讨论】:

    【解决方案2】:

    “流媒体”是什么意思?即时将命令结果提供给 http 客户端?或者您的客户端是一些播放视频的视频播放器(例如接收 4 个 IP 摄像机的 tcp 流的 VLC 播放器)?

    处理视频并非易事,您需要谨慎选择协议、工具甚至硬件。

    根据您作为示例发送的命令,您可能需要一些转换视频的作业。 这里有一篇完整的文章介绍如何使用Azure Batch来处理使用ffmeg。如果需要,您可以使用任何批处理解决方案(另一个答案建议 Hangfire,也可以)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-28
      • 2016-10-05
      • 2015-11-29
      • 1970-01-01
      • 2014-03-22
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多