如何设置 ffmpeg 的输出 rtmp 流的端口?

如何设置 ffmpeg 的输出 rtmp 流的端口?

我可以使用 ffmpeg 为输出 rtmp 流设置不同的端口吗?

例如, ffmpeg -listen 1 -i rtmp://server0:port/live/key -c copy -f flv rtmp://server1/live/key -f flv rtmp://server2/live/key

我需要为服务器 1 和服务器 2 设置不同的端口,但我不知道该怎么做。如果您能帮助我,我将不胜感激

答案1

您可以使用三通复用器

笔记:

  • 使用时球座, 我们必须地图视频和音频。

使用以下语法:

ffmpeg -listen 1 -i rtmp://server0:port/live/key -c copy -f tee -use_fifo 1 -map 0:v? -map 0:a? "[f=flv]rtmp://server1:port1/live/key|[f=flv]rtmp://server2:port2/live/key"

  • -f tee- 使用 tee muxer(将输出分成两个 URL)。
  • -map 0:v? -map 0:a?- 映射视频和音频(?在没有视频或音频流的情况下需要)。
  • "[f=flv]rtmp://server1:port1/live/key|[f=flv]rtmp://server2:port2/live/key"
    将 输出分成两个 RTMP 流 -server1:port1并且选择 FLV 输出格式 (针对每个)。server2:port2
    [f=flv]
  • -use_fifo 1- 允许补偿输出的不同速度/延迟/可靠性。

测试

以下是将合成视频和音频流式传输到两个 FFplay 实例的示例:

从不同的终端执行每个命令。

ffplay -listen 1 -timeout 1000000 -i rtmp://127.0.0.1:5000/live/key
ffplay -listen 1 -timeout 1000000 -i rtmp://127.0.0.1:6000/live/key

等待几秒钟...

ffmpeg -re -f lavfi -i testsrc=size=192x108:rate=25 -f lavfi -i sine=frequency=400 -vcodec libx264 -pix_fmt yuv420p -acodec aac -ar 22050 -f tee -use_fifo 1 -map 0:v? -map 1:a? "[f=flv]rtmp://127.0.0.1:5000/live/key|[f=flv]rtmp://127.0.0.1:6000/live/key"

请先执行测试,如果不行请告诉我。

相关内容