请选择 进入手机版 | 继续访问电脑版

4

阿木币

0

精华

9 小时

在线时间

老司机

Rank: 2

发表于 2024-5-29 12:04:33 335 浏览 2 回复

遇到了关于推流到接收端的视频流出现间隔性卡顿的问...

本帖最后由 阿硕 于 2024-5-29 12:41 编辑

        求教,在读取吊舱的rtsp流后,使用实例化推流类 sv::VideoStreamer 将读到的画面推流到笔记本PC(网线直连),在笔记本PC播放时会出现间隔性卡顿,但在orin设备上直接用 cv::imshow("img", img) 显示的窗口画面没有卡顿,所以怀疑是推流部分的参数设置问题?尝试过改小比特率,但问题依然存在,想求教一下问题处在哪里,如何调整才能不卡?(拍的显示推流的视频上传不了,以下是测试推流所用的代码很简单,基于demo只改了读取rtsp部分)

#include <iostream>
#include <string>
// 包含SpireCV SDK头文件
#include <sv_world.h>

using namespace std;

int main(int argc, char *argv[]) {
  // 实例化 通用目标 检测器类
  sv::CommonObjectDetector cod;
  // 手动导入相机参数,如果使用Amov的G1等吊舱或相机,则可以忽略该步骤,将自动下载相机参数文件
  cod.loadCameraParams("/home/xfkj/SpireCV/calib_zr10_1280x720.yaml");
  cod.loadAlgorithmParams(sv::get_home() + "/SpireCV/sv_algorithm_params.json");

  // 打开摄像头
  sv::Camera cap;
  cap.setRtspUrl("rtsp://192.168.144.25:8554/main.264");
  cap.open(sv::CameraType::RTSP, 0);  // CameraID 0

  // 实例化OpenCV的Mat类,用于内存单帧图像
  cv::Mat img;
  int frame_id = 0;

  // 实例化视频推流类sv::VideoStreamer
  sv::VideoStreamer streamer;
  // 初始化 推流分辨率(640, 480),端口号8554,比特率1Mb
  streamer.setup(cv::Size(640, 360), 8554, 1);

  while (1)
  {
    // 实例化SpireCV的 单帧检测结果 接口类 TargetsInFrame
    sv::TargetsInFrame tgts(frame_id++);
    // 读取一帧图像到img
    cap.read(img);

    // 执行通用目标检测
    cod.detect(img, tgts);

    // 可视化检测结果,叠加到img上
    sv::drawTargetsInFrame(img, tgts);

    // 打印当前检测的FPS
    printf("  FPS = %.2f\n", tgts.fps);

    // 将img推流到 地址:rtsp://ip:8554/live
    cv::resize(img, img, cv::Size(640, 360));
    streamer.stream(img);

    // 显示检测结果img
    // cv::imshow("img", img);
    cv::waitKey(10);

  }

  return 0;
}





测试推流用的完整代码

测试推流用的完整代码

扫一扫浏览分享
回复

使用道具 举报

4

阿木币

0

精华

3 小时

在线时间

技术大V

Rank: 4

发表于 2024-5-30 14:47:40
您好!

导致卡顿的原因有很多,涉及硬件、软件、网络带宽等因素;在没有接触到实际硬件之前,我们也很难说具体是什么原因导致的,建议您逐一排查;

根据您的描述,可以指导从吊舱相机读取到在orin的显示上,是没有问题的;显然,我们可以把问题往后定位到推流、网络带宽、拉流端;比如尝试使用不同的拉流软件、检查在推流过程中网络带宽的使用情况、还可以对分辨率、帧率、比特率做一下控制变量;

拉流可以使用SpireView:https://gitee.com/amovlab/spireview


回复 点赞 1

使用道具 举报

4

阿木币

0

精华

9 小时

在线时间

老司机

Rank: 2

 楼主| 发表于 2024-5-31 14:06:41
本帖最后由 阿硕 于 2024-5-31 14:15 编辑
amov_daniel 发表于 2024-5-30 14:47
您好!

导致卡顿的原因有很多,涉及硬件、软件、网络带宽等因素;在没有接触到实际硬件之前,我们也很难说 ...

  感谢回复,我根据您的建议,尝试了使用SpireView拉流,又调整了一下比特率和帧率,卡顿情况有所改善。
          想再请教您关于SpireView的问题,之前看到了SpireCV研发人员b站发布的地面站点击、机载端目标跟踪的视频,想实现该功能。
          看到视频中地面站鼠标点击发送用的软件是SpireView?想知道如何配置SpireView才能实现鼠标点击实现udp指令上传呢?SpireView仓库里没找到相关介绍。
          我尝试在机载端运行SpireCV的demo中的udp_detection_info_receiver_by_airborne.cpp,但并没有收到地面站SpireView点击后发来的udp指令。
        ( 如图,SpireView中 Input --> UDP Server 对应IP已经设置为机载端IP )

          还请指点一二。


地面点击、机载跟踪测试

地面点击、机载跟踪测试

SpireView配置机载端IP

SpireView配置机载端IP
回复 点赞

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表