我正在尝试使用libav将RTSP实现到RTMP restreamer。 “ffmpeg”命令工作正常:
ffmpeg -i "rtsp://localhost:8884/live" -vcodec copy -f rtsp "rtmp://user:password@localhost:1935/live/stream"
但是当我使用libav执行此操作时,我收到了RTMP身份验证错误。这些是我尝试的方式:
avformat_alloc_output_context2(&m_outformat, NULL, "rtsp", "rtmp://user:password@localhost:1935/live/stream");
avformat_alloc_output_context2(&m_outformat, NULL, "rtsp", "rtmp://localhost:1935/live/stream?user&password");
avformat_alloc_output_context2(&m_outformat, NULL, "rtsp", "rtmp://localhost:1935/live?user&password/stream");
avformat_alloc_output_context2(&m_outformat, NULL, "rtsp", "rtmp://localhost:1935/live/stream?username=user&password=password");
avformat_alloc_output_context2(&m_outformat, NULL, "rtsp", "rtmp://localhost:1935/live?username=user&password=password/stream");
avformat_alloc_output_context2(&m_outformat, NULL, "rtsp", "rtsp://user:password@localhost:1935/live/stream")
有人可以告诉我如何启用RTMP身份验证。
如上所示,我们使用“rtsp”作为“format_name”,URL以“rtmp://”开头。这是因为当我们两者都保持“rtsp”时,“m_outformat-> pb”将变为NULL,随后对“avio_open”的调用将给出错误。
答案 0 :(得分:1)
由于您尝试在RTMP中进行流式处理,因此您的format_name应为" flv"而不是" rtsp"。 RTMP流中的身份验证方案与RTSP流不同,您需要指定。
以下ffmpeg命令应与RTMP身份验证方案一起使用(在Windows平台上测试):
ffmpeg -re -i "rtsp://localhost:8884/live/myStream" -c:v copy -c:a copy -f flv "rtmp://localhost/live/myStream flashver=FMLE/3.0\20(compatible;\20FMSc/1.0) live=true pubUser=user pubPasswd=password"
如果您使用的是Linux平台,请使用以下命令进行测试:
avformat_alloc_output_context2(&m_outformat, NULL, "flv", "rtmp://user:password@localhost:1935/live/stream");