【问题标题】:FFmpeg UDP timeout, retrying with TCP callbackFFmpeg UDP 超时,使用 TCP 回调重试
【发布时间】:2023-03-27 13:39:01
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: ios tcp ffmpeg udp rtsp


    【解决方案1】:

    我找到了解决办法:建立连接后,可以从AVFormatContext的私有数据(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 实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      • 2014-12-09
      • 2017-06-11
      • 2016-11-18
      • 2018-04-22
      • 2013-09-24
      相关资源
      最近更新 更多