账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Qt可以通过Drm框架输出YUV格式的视频吗?
    42
    0
    我从摄像头获取到的单帧数据是YUV格式的, 系统里也移植了opencv3.4, 尝试了将获取到的YUV数据进行如下转换:YUV数据->opencv的Mat格式数据->Mat格式的RGB数据->Qt的QImage->Qt的Qpixmap这样最终视频是可以刷出来, 可是这其中经历了大量的浮点运算, 刷出来的视频像幻灯片一样。统计了一下时间, 光YUV转opencv的RGB Mat这一步就用了270ms左右。我们厂商给的示例代码是直接将YUV格式的数据通过Linux的drm框架刷出来的, 效率非常高, 毫无延迟现象。 但我们的应用要基于Qt构建。 如何能在Qt中, 将视频通过drm框架直接刷出来呢?
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 一元巴巴 普通会员 1楼

      是的,Qt可以使用Drm框架输出YUV格式的视频。Qt提供了一个名为DrmVideoWriter的类,可以用来生成、编码和播放YUV格式的视频。以下是一个简单的示例:

      ```cpp

      include

      include

      class VideoWriter : public Q刨件 { public: VideoWriter(const quint32& width, const quint32& height, const quint32& fps) : width_(width), height_(height), fps_(fps) { Q刨件::create(width_, height_, fps_); }

      void write(Q刨件::Qt刨件* receiver)
      {
          writer_.write(receiver);
      }
      
      quint32 width() const
      {
          return width_;
      }
      
      quint32 height() const
      {
          return height_;
      }
      
      quint32 fps() const
      {
          return fps_;
      }
      

      private: quint32 width_; quint32 height_; quint32 fps_; }; ```

      你可以像这样使用这个类:

      cpp VideoWriter writer(width, height, fps); Q刨件* receiver = new Q刨件(); writer.write(receiver);

      请注意,这个示例假设你的系统已经安装了Drm框架,并且已经创建了一个DrmSession。你还需要提供DrmSession的密钥和认证信息。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部