请让我解决一个基本问题,我无法阅读FFmpeg / libavformat文档。
FFmpeg可以消耗通过UDP协议从RTP输入的音频/视频。而且它也可以消耗RTSP流。最后,RTSP是一个控制协议(通过TCP),该协议通过SDP协商媒体。音频/视频可以传输:
通过使用单独的UDP“连接”发送RTP数据包。
通过共享控制协议和RTP的TCP连接。在这种情况下,通过在每个RTP数据包之前添加一些字节来对其进行封装,如下所示:
| magic number | channel number | embedded data length | RTP packet |
而且FFmpeg似乎同时支持上述方法1和2。
我的具体问题如下:
a。 FFmpeg可以在没有 RTSP的情况下通过TCP接收RTP吗?我的意思是:仅通过TCP连接发送RTP数据包,如上在RTSP中封装,或使用RFC 4571“在TCP上构建RTP帧”(这只需要在每个RTP数据包前面加上两个字节,指示数据包的长度)。>
b。如果答案是。是“是”,FFmpeg可以充当TCP客户端(并连接到它将通过TCP接收RTP的远程端点)吗?还是必须充当接收RTP的TCP服务器?