RTMP 代理裁剪原始视频并将其发送到另一个 RTMP 服务器

RTMP proxy to crop original video and send it to another RTMP server

我需要从 RTMP 流中裁剪视频并将其发送到另一个经常变化的 RTMP 服务器。我的理解是我应该使用 nginx-proxyffmpeg,谁能帮我设置一下?

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

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

  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 module for nginx and setup ffmpeg command using exec_push 指令:

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