本文共 1165 字,大约阅读时间需要 3 分钟。
如有错误,请指正,谢谢。
//设置参数AVDictionary *format_opts = NULL;av_dict_set(&format_opts, "stimeout", std::to_string( 2* 1000000).c_str(), 0); //设置链接超时时间(us)av_dict_set(&format_opts, "rtsp_transport", "tcp", 0); //设置推流的方式,默认udp。//初始化输入上下文AVFormatContext * m_InputContext = avformat_alloc_context();//打开输入流。avformat_open_input(&m_InputContext, "rtsp://127.0.0.1:554/", NULL, &format_opts);// ......
//初始化输出流上下文。AVFormatContext * output_format_context_ = NULL;avformat_alloc_output_context2(&output_format_context_, NULL, "rtsp", "rtsp://127.0.0.1:554/");/* 添加流信息 //TODO*///设置参数,设置为TCP推流, 默认UDPAVDictionary *format_opts = NULL;av_dict_set(&format_opts, "stimeout", std::to_string(2 * 1000000).c_str(), 0);av_dict_set(&format_opts, "rtsp_transport", "tcp", 0);//写入输出头(建立rtsp连接)avformat_write_header(output_format_context_, &format_opts);while(1){ AVPakcet media_pkt; /* 初始化PKT, 读取数据, 填充数据, */ //发送数据, 多个流时需要使用 av_interleaved_write_frame, 另附ret部分错误码,见其他文章。 int ret = av_interleaved_write_frame(output_format_context_, &media_pkt); //释放数据 av_packet_unref(&media_pkt); av_free_packet(&media_pkt);}
欢迎转载: