FFMPEG:通过授权将TTL伪复用到RTMP端点

时间:2017-11-29 15:11:06

标签: ffmpeg video-streaming rtmp

我有一台RTMP服务器需要授权才能流式传输到。在FFMPEG中,我可以像这样流式传输:

ffmpeg \
    -i <input> \
    -c:v libx264 \
    -c:a speex \
    -f flv \
    "rtmp://server/instance live=true pubUser=user pubPasswd=pass playpath=stream_id"

现在,我希望将此流分割为 两个 此类端点 ,而无需重新编码

我可以像以下那样使用重新编码:

ffmpeg \
    -i <input> \
    -c:v libx264 \
    -c:a speex \
    -f flv \
    "rtmp://server1/instance live=true pubUser=user pubPasswd=pass playpath=stream_id"
    -c:v libx264 \
    -c:a speex \
    -f flv \
    "rtmp://server2/instance live=true pubUser=user pubPasswd=pass playpath=stream_id"

然而,我试着看一下FFMPEG's guide on this subject,但它只会导致错误:

尝试1

直接使用-f tee

ffmpeg \
    -i <input> \
    -c:v libx264 \
    -c:a speex \
    -f tee \
    -map 0:v \
    -map 0:a \
    "[f=flv]rtmp://server1/instance live=true pubUser=user pubPasswd=pass playpath=stream_id| \
     [f=flv]rtmp://server2/instance live=true pubUser=user pubPasswd=pass playpath=stream_id"

收率:

[rtmp @ 0x3fe7f40] No credentials set
[rtmp @ 0x3fe7f40] Server error: [ AccessManager.Reject ] : [ code=403 need auth ] :

尝试2

在网址和参数周围使用引号

ffmpeg \
    -i <input> \
    -c:v libx264 \
    -c:a speex \
    -f tee \
    -map 0:v \
    -map 0:a \
    "[f=flv]\"rtmp://server1/instance live=true pubUser=user pubPasswd=pass playpath=stream_id\"| \
     [f=flv]\"rtmp://server2/instance live=true pubUser=user pubPasswd=pass playpath=stream_id\""

收率:

[tee @ 0x39837e0] Slave '[f=flv]"rtmp://server1/instance live=true pubUser=user pubPasswd=pass playpath=stream_id"': error opening: No such file or directory

尝试3

引用一切

ffmpeg \
    -i <input> \
    -c:v libx264 \
    -c:a speex \
    -f tee \
    -map 0:v \
    -map 0:a \
    "\"[f=flv]rtmp://server1/instance live=true pubUser=user pubPasswd=pass playpath=stream_id\"| \
     \"[f=flv]rtmp://server2/instance live=true pubUser=user pubPasswd=pass playpath=stream_id\""

收率:

[NULL @ 0x393a820] Unable to find a suitable output format for '"[f=flv]rtmp://server1/instance live=true pubUser=user pubPasswd=pass playpath=stream_id"'

尝试4

备用URL架构以避免使用空格

ffmpeg \
    -i <input> \
    -c:v libx264 \
    -c:a speex \
    -f tee \
    -map 0:v \
    -map 0:a \
    "[f=flv]rtmp://user:pass@server1/instance/stream_id| \
     [f=flv]rtmp://user:pass@server2/instance/stream_id"

似乎可以正常工作,但FFMPEG开始输出:

frame=   89 fps= 13 q=0.0 Lsize=N/A time=00:00:03.27 bitrate=N/A dup=18 drop=0 speed=0.469x

注意bitrate=N/Aspeed=0.469x?两个问题。然后我去玩家看我的溪流,它是纯黑色的。实际上没有数据通过。

我做错了什么,如何让这个流有效?

0 个答案:

没有答案