当前位置: 首页 > news >正文

商丘住房和城乡建设网站新洲建设投标网站

商丘住房和城乡建设网站,新洲建设投标网站,asp.net网站开发文档,网站建设不力 被问责0、应用场景问题 我们使用opencv作为拉流客户端#xff0c;获取画面后进行图像处理并推流#xff08;使用ffmpeg库#xff09;。 opencv解码同样使用ffmpeg库。 我们要求opencv能根据业务不断进行拉流操作#xff0c;等效的逻辑代码如下#xff1a; while(1) {printf(获取画面后进行图像处理并推流使用ffmpeg库。 opencv解码同样使用ffmpeg库。 我们要求opencv能根据业务不断进行拉流操作等效的逻辑代码如下 while(1) {printf(start open rtmp\n);cv::VideoCapture cap;if(!cap.open(rtmp://192.168.3.100:1935/live/1581F5FHB228R00200S3, cv::CAP_FFMPEG)) // // 无流时会有20-30s超时时间{printf(reopen rtmp\n);continue;}// 推流初始化 ...while(1) {cap.read(frame); // 无流时会有20-30s超时时间if(frame.empty()) {printf(frame empty\n);break; }cv::imshow(v, frame);cv::waitKey(1);// 图像处理 ...// 推流 ...}// 推流反初始化 ... }注意代码中 // 无流时会有20-30s超时时间 注释的地方cap.open() 和 cap.read(frame)后面会用到。 在一次偶然测试中发现opencv拉流时控制台会出现如下错误 [NULL 000001bb1f721400] missing picture in access unit with size 4 [h264 000001bb1f71f880] Error splitting the input into NAL units.导致后续获取frame为空认为流断开触发重新进行拉流的操作导致后续视频处理、推流业务有短暂停顿客户端播放会出现响应的短暂黑屏问题。 1、解决思路 出现前面情况的可能原因 可能是因为网络问题引起数据丢失使得解码出现问题是一段秒级以上时间的发生频率。 我们不去处理视频源、opencv底层的亲在问题仅从应用层上规避该原因带来的问题也就是不将这个报错信息作为拉流断开来处理。 1.1、方式一 我们简单操作修改代码如下。流存在时如果frame为空不作为错误直接continue进行下一次读取。 if(frame.empty()) {printf(frame empty\n);// break; continue; // 不进行重新拉流}实际测试时能够跳过当前空帧并能再次重新成功获取新的frame。 但是会存一下可能的问题 1无法区分流真正断开的情况导致程序会卡在读取frame的循环中 2断开流超过 cap.read(frame) 超时时间后再次连接后无法解码 这个错误在1的基础之上出现导致流不能解码需要重新拉流或其他未知设置?。如下图 1.2、方式二 我们设置一个frame.empty()为空的次数限制当达到一定次数如3次认为是流断开连接。 while(1) {cap.read(frame); // 无流时会有20-30s超时时间if(frame.empty()) {printf(frame empty\n); if(cnt 3) {cnt 0;printf(grab failed at 3 times, reopen rtmp\n);break;}continue;}// 其他操作...}当流正常确认断开后cap.read(frame) 会阻塞阻塞3次约60~90s后将退出当前while循环进行重新拉流。这种逻辑是符合业务的新拉流可能参数配置改变需要重新进行推流参数的调整推流反初始化、推流初始化。 当以cap.read(frame) 超时以20s不同时间端重连时说明如下情况 若在 20s 内流重新连接时能正常获取非空的 frame。 在 20~60s 之内重新获取流时cap.read(frame) 不再超时且以流帧率进行执行例如 30fps 时会再后续第 3x20 60ms 后 break 退出当前循环、重新拉流。 在 60s 后break 退出当前循环、重新拉流。 存在问题 前面代码中若正常获取非空 frame 后未将 cnt 置零会出现每次累计出现文首错误读到空frame 到第 3 次 必将 break 退出当前循环、重新拉流。因此需要在 if 语句后面后对 cnt 重置。 1.3、方式三 方式二的等效代码只不过是使用了 VideoCapture 的另外一种接口方式。 while(1) { if(!cap.grab()) { // 无流时会有20-30s超时时间if(cnt 3) {cnt 0;printf(grab failed at 10 times, reopen rtmp\n);break;}continue;}cnt 0; // 重置if(!cap.retrieve(frame)) {printf(retrieve failed\n);continue;}// 其他操作...}
http://www.pierceye.com/news/453849/

相关文章:

  • wordpress 网站禁用全屏代码百度怎么建设网站
  • 强军网网站建设北京各大网站推广服务公司
  • 西安优秀的集团门户网站建设公司网站建设中 优秀账户的标准
  • 网站建设的对比分析移动设备网站开发注意点
  • 在word上怎么做网站链接网站开发试题
  • 自己做网站新手入门淮北论坛招聘网
  • 建网站的意义大学跳蚤市场网站建设
  • 平阳做网站成都网站优化公司哪家好
  • 庆阳北京网站建设广东省建设工程执业中心网站
  • 佛山哪里有做网站的大学生文创产品设计
  • 电商网站建设运城网站图片链接怎么做的
  • 服务器建网站教程宁波网络营销推广制作
  • 微信公众号属于网站建设网站云解析域名解析
  • 网站的建设及推广在哪找可以做网站的
  • 网站经常修改好不好北京互联网公司50强
  • 知识网站有哪些h5用什么制作
  • 广州网站制作联系方式上海共有多少家企业
  • 自己建一个网站需要什么网站关键词分析工具
  • 建三江建设局网站四川省建设厅官方网站电话
  • 福建志佳建设工程发展有限公司网站vi品牌包装
  • 专业门户网站开发公司龙岩正规全网品牌营销招商
  • 网站怎么做qq微信登陆政务网站的建设时期的概述
  • 购物网站的目的和意义西安做网站xamokj
  • 厦门市建设局网站网站开发周记30篇
  • 工业园区门户网站建设方案塘沽网站开发
  • 郑州网站设计 公司驻马店市可以做网站的公司
  • 推荐盐城网站开发安陆网站开发
  • wordpress中文网站模板软件开发者路线图
  • 福清市建设局网站深圳网站制作品牌祥奔科技
  • 工程建设采购有哪些网站做网络销售怎么样