【问题标题】:RTMP proxy to crop original video and send it to another RTMP serverRTMP 代理裁剪原始视频并将其发送到另一个 RTMP 服务器
【发布时间】:2020-09-26 11:55:20
【问题描述】:

我需要从 RTMP 流中裁剪视频并将其发送到另一个总是在变化的 RTMP 服务器。我的理解是我应该使用nginx-proxyffmpeg,有人可以帮我设置一下吗?

我想我需要将流发送到/stream/:stream-key/:next-server-ip 之类的端点,使用 ffmpeg 处理流,然后将其发送到 :next-server-ip,我应该在后端使用什么语言?

【问题讨论】:

  • 为什么需要nginx?仅从源捕获 RTMP 流,对其进行裁剪并将结果放入目标中还不够吗?
  • @AlexanderUshakov 我可以使用 node-media-server 而不是 nginx 我需要的是能够在来自一项服务 ( Opentok ) 的 RTMP 信号到达 Brightcove Live 端点之前对其进行裁剪。这是我需要能够以编程方式为大量流做的事情

标签: nginx ffmpeg reverse-proxy rtmp nginx-reverse-proxy


【解决方案1】:

处理此类任务有两种策略:

  1. “拉”

您有一些已发布的 rtmp 流并使用 ffmpeg 将其拉取、转换并将结果发送到另一台服务器:

ffmpeg -i rtmp://source-server/stream -filter:v "crop=out_w:out_h:x:y" -vcodec h264 -acodec copy -f flv rtmp://next-server/stream
  1. “推”

RTMP 流被推送到您的服务器,该服务器对其进行处理并将结果发送到另一台服务器。对于这样的任务,您可以使用nginx-rtmp nginx 模块并使用exec_push 指令设置ffmpeg 命令:

application src {
    live on;
    exec_push ffmpeg -i rtmp://localhost/src/$name -filter:v "crop=out_w:out_h:x:y" -vcodec h264 -acodec copy -f flv rtmp://next-server/stream 2>>/var/log/ffmpeg-$name.log;
}

当有人开始向rtmp://your-server/src/stream_name 流式传输时,将执行此ffmpeg 命令并开始处理

有关视频裁剪和相关ffmpeg 参数的更多信息,请参阅https://video.stackexchange.com/a/4571

【讨论】:

  • 最好的方法是#1 还是#2?我必须做这样的事情。我必须直播一个直播活动,但现在我有很多观众,我想添加更多服务器,所以我有 3 个服务器来做直播,不是吗?
猜你喜欢
  • 2017-08-13
  • 2022-08-22
  • 2013-02-25
  • 1970-01-01
  • 2013-05-22
  • 1970-01-01
  • 2015-04-22
  • 2020-10-17
  • 1970-01-01
相关资源
最近更新 更多