泠弦月屿 Rinzemoon
← Back to the beginning

实习日记Day02

实习日记
2026-07-17 文章 泠時月 1 分钟 211 字
日记
文件路径: content/posts/Dairy1.md

实习日记 Day02

摄像头

  • 连接了海康威视的摄像头,获得url并且成功ffplay它的url进行播放
  • ffplay -x 800 -y 600 “rtsp://admin:a12345678@192.168.0.104:554/h264/ch1/main/av_stream”

FFmpeg的编译

  • 编译了好几次,一开始Msys2环境下编译的产物,在项目里ld出现了链接性错误,我怀疑Msys2下的静态链接可能有需要其他细致的问题,于是我主动转为动态编译了,这次成功了

与ai进行的流管理器设计

code
StreamManager (总管)
    │
    ├── 持有 QVector<QSharedPointer<VideoStream>>  (所有流的遥控器)
    │
    ├── 持有 QHash<QString, int>                   (ID → 数组下标,快速查找)
    │
    └── 提供操作接口:
            ├── addStream(url)    → 创建新的 VideoStream + Demuxer + Decoder
            ├── removeStream(id)  → 停止并销毁指定的播放链路
            ├── startAll()        → 一键启动所有流
            └── getStatus(id)     → 查询某路流的实时状态
code
┌───────────────────────────────────────────────────────┐
│                    StreamManager                       │
└───────────────┬───────────────────────────────────────┘
                │ 1 : N
┌───────────────▼───────────────────────────────────────┐
│             VideoStream (每条流一个)                  │
│  ┌──────────────────────────────────────────────────┐ │
│  │  Demuxer 专用线程 (QThread) ← 阻塞 I/O,隔离   │ │
│  │  - 长期运行,只负责 av_read_frame              │ │
│  │  - 产出 VPacketItemPacket Buffer            │ │
│  └──────────────────────────────────────────────────┘ │
│  ┌──────────────────────────────────────────────────┐ │
│  │  Decoder 专用线程 (QThread) ← 有状态,隔离     │ │
│  │  - 长期运行,只负责 avcodec_send/receive       │ │
│  │  - 产出 VFrameItemFrame Buffer              │ │
│  └──────────────────────────────────────────────────┘ │
│  ┌──────────────────────────────────────────────────┐ │
│  │  YUV→RGB 转换任务 (QThreadPool::globalInstance)│ │
│  │  - 无状态,纯计算,可以并行                     │ │
│  │  - 用完即弃,不长期占用线程                     │ │
│  └──────────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────────┘

types.h

做了一些音视频的初步处理,比如SPSCRingBuffer 一些VPacketItem等基础框架,再就是一些enum 状态

初步做了解复用的init环节,m_fmtctx 以及一些av_dict 的设置,获得了流信息和流id,填充了内容

© 泠時月 2026,采用 CC BY 4.0 许可,转载保留署名。

留言 · 0 段对话

扫码分享

二维码