解决ffmpeg打开流各种超时问题

1.设置rtsp超时

AVDictionary* opts = NULL;

av_dict_set(&opts, "rtsp_transport", m_bTcp ? "tcp" : "udp", 0); //设置tcp or udp,默认一般优先tcp再尝试udp
av_dict_set(&opts, "stimeout", "3000000", 0);//设置超时3秒

int ret = avformat_open_input(&ctx, url, NULL, &opts);

2.设置udp,http超时

AVDictionary* opts = NULL;

av_dict_set(&opts, "timeout", "3000000", 0);//设置超时3秒

int ret = avformat_open_input(&ctx, url, NULL, &opts);

3.设置av_read_frame 超时

auto ctx = avformat_alloc_context();
ctx->interrupt_callback.callback = CheckInterrupt;//超时回调
ctx->interrupt_callback.opaque = this;

//

m_tStart = time(NULL);

av_read_frame(ctx, &pkt);

//超时回调函数

static int CheckInterrupt(void* ctx)
{
  auto p = (xxx*)ctx;
  return time(NULL) -  p->m_tStart >= 3 ? 1 : 0;//3秒超时
}

posted @   triplekill  阅读(17020)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示