你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

psdk 对zed2 推流 之 ffmpeg h264编解码

2021/12/9 20:38:29

ffmpeg h264编解码

  • 背景
  • 数据流程
  • 思路理解
  • 排坑

背景

需求:需要通过大疆的PSDK发送视频流到大疆M300的遥控器上显示。

数据流程

编码:ROS::Image(BGR)->cv::mat(BGR)->YUV420->h264
解码:h264->YUV420->BGR

思路理解

初识PSDK开发
通过psdk的demo,可以正常推送mp4文件视频流到pilot,证明只要修改这个demo,按帧转换h264发出去就可以播放了。
好的,我抽取自己需要的功能重新封装成mypsdk,新的psdk是依赖ros的,因为需要订阅zed传过来的视频流。

好的,现在就差怎么买将YUV420转成h264了,兜兜转转,终于找到一个博主封装好的:https://blog.csdn.net/leonardohaig/article/details/103624426
跟着这位博主可以对OpenCV Mat进行h264的编解码。

(这里呢还要引荐一位对ffmpeg有很多研究的博主:雷老师)

排坑

  1. 关于绑定psdk 账号的问题:
    psdk需要去官网注册psdk应用才能使用。绑定是不需要运行PSDK的,但是解绑是需要运行PSDK程序的,如果之前有同事已经申请psdk的一个应用并且通过桌面端的大疆助手绑定了这个psdk控件的话,那么需要先解绑。解绑操作是:登录绑定人的账号->解绑->然后去官网申请psdk应用->sudo ./psdk_demo启动psdk demo->登录大疆助手后重新绑定。此时你可能像我一样:在绑定负载设备时候报错:绑定关系错误。我的发者帐号与PSDK程序中是一致的,请问是什么原因呢?
    这是大疆的问题了,我是将账号反馈给大疆客服,然后帮我解绑才能重新绑定的。

  2. 关于psdk推流的坑,需要修改demo得一个地方才能才能得使用demo。详情链接在这。
    在test_payload_cam_emu.c文件中将StreamType设成Custom格式在这里插入图片描述

  3. 关于用ffmpeg 编码时候的坑
    因为出来的效果是这样的:
    在这里插入图片描述
    在这里插入图片描述

找了好久原因,最终是发现是编码时候字节不对齐导致的颜色缺失。
修改代码如下,将0改为1
suoyi
附上给最终成果图:
在这里插入图片描述

  1. usb口重新插拔后序列号有问题,需要用软链接指定。