lowerTransportProtocol

lowerTransportProtocol

我正在使用RTSP在iOS应用程序中读取一些FFmpeg流。如果防火墙或其他服务阻止网络通过UDP接收消息,则FFmpeg可以很好地回退到通过TCP进行读取。我的问题是:如何通知TCP后备发生?我需要知道该应用程序是通过UDP还是TCP读取流,并且仍然让FFmpeg做好其后备操作。
有回调吗?有没有办法获取正在使用的协议?

谢谢。

最佳答案

我找到了解决方案:建立连接后,可以从AVFormatContext的 private 数据(priv_data)中读取较低的传输协议。贝娄是我的做法:

-(BOOL)lowerTransportProtocolIsUDP
{
    RTSPState* rtsp_state = (RTSPState*) _avFmtCtx->priv_data;

    enum RTSPLowerTransport lowerTransportProtocol = rtsp_state->lower_transport;

    NSLog(@"lowerTransportProtocol = %d", lowerTransportProtocol);

    if (lowerTransportProtocol == RTSP_LOWER_TRANSPORT_UDP) {
        return YES;
    }

    return NO;
}

其中_avFmtCtxAVFormatContext实例。

07-24 09:23