导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    使用tinyvision制作简单的网络摄像机IPC

    V Series
    7
    11
    4422
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • lajuchenghui
      逸俊晨晖 LV 5 最后由 编辑

      前言
      静谧里 它静静地守候 如同时间的拾荒者 捕捉着光影交织的故事
      ——致摄像机

      演示效果


      1080P20

      基本思路
      用v4l2读取摄像头图像 然后用硬件编码器把图像编码 最后把编码数据传给rtsp服务器 这样外部就可以直接拉流播放了

      提供的系统里有个摄像头测试程序camerademo 能用v4l2读取摄像头图像 sdk里有源码 把源码简单修改一下接口对接

      提供的系统里有个硬件编码器测试程序encodertest 能把图像编码成h264数据 直接运行是不能使用的 它的参数解析有问题 需要修改源码的长宽和文件输入输出路径 重新编译才能使用
      注意 sdk里面有多个编码器操作例子 只看到一个是接口符合sdk里面的编码器操作接口 其他都是不能用的老接口
      能用的encodertest源码路径openwrt/package/allwinner/multimedia/tina_multimedia_demo/encodertest/mpp_src

      rtsp部分是网上找的一个编程实现的简单的rtsp服务器 相当于推流加服务器 外部直接拉流就行

      硬件软件版本
      主板 TinyVision
      主控 V851SE
      系统sdk Tina 5.0

      系统镜像
      https://tinyvision.yuzukihd.top/#/?id=tinasdk-50
      v851se_linux_tinyvision_uart0.zip

      外设
      摄像头 GC2053
      网络 百兆RJ45头

      附件
      使用tinyvision制作简单的网络摄像机IPC附件.zip

      应用程序使用方法

      先用adb把程序传进板子

      adb push D:\Ubuntu18_tinyvision\share\app\tinyvisionIpcV1\tinyvisionIpcV1 /root
      

      使用命令添加执行权限

      chmod +x tinyvisionIpcV1
      

      使用ifconfig配网

      ifconfig eth0 192.168.2.17 broadcast 192.168.2.255 netmask 255.255.255.0 up
      ifconfig lo 127.0.0.1 up
      route add default gw 192.168.2.1
      

      仅支持一种参数格式 参数为 长 宽 帧率
      执行例子

      ./tinyvisionIpcV1 640 480 30
      

      执行时不加参数时默认参数为 640 480 30
      当参数不支持时v4l2会打印出不同的参数 不会自动调整为相近的适合参数
      v4l2打印的帧率有时候不对 以程序每秒打印的摄像头帧率为准
      验证过的参数
      1920 1080 20
      1280 720 30
      640 480 30

      摄像头读图像帧使用v4l2框架 输出格式是NV21 参数不支持基本上是摄像头不支持导致的
      默认操作设备/dev/video0 使用前检查有没这个设备 接了摄像头 摄像头驱动加载成功基本都会有这个设备
      可以使用系统自带的camerademo排查操作摄像头有没问题

      编码器是用的sdk提供的硬编码 输入NV21输出H264
      程序运行时会每秒打印编码帧率 这个帧率不是编码器最大帧率 是工作时的帧率 摄像头帧率低会导致编码器帧率低
      可以使用系统自带的encodertest排查编码器有没问题

      rtsp是网上找的一个编程实现的简单的rtsp服务器 相当于推流加服务器 外部直接拉流就行
      rtsp端口为554 路径为/live
      拉流流例子 ip要换成板子的ip
      rtsp://192.168.2.17/live

      ffmpeg拉流使用方法

      在pc上解压ffmpeg压缩包 用cmd进入ffmpeg bin目录执行命令 记得换ip

      ffplay.exe -rtsp_transport tcp  rtsp://192.168.2.17/live
      

      参数-rtsp_transport tcp的意思是以tcp的方式建立rtsp链接 不写默认是udp 用tcp可以减少丢包花屏情况

      cmake工程编译使用方法

      工程使用cmake构建
      需要安装cmake

      apt-get install cmake
      

      需要修改CMakeLists.txt里指定的编译器路径和头文件库文件路径
      然后在CMakeLists.txt所在路径执行一次命令

      cmake .
      

      产生makefile 然后执行

      make
      

      就可以产生应用程序

      注意 sdk的gcc使用时要求导出变量STAGING_DIR

      export STAGING_DIR="/root/tina-v853-open/out/v851se/tinyvision/openwrt/staging_dir/"
      

      用编译sdk时的source build/envsetup.sh也行

      预告
      读图像编码 rtsp流服务 只是开始
      因为编解码器接口变更 4.0mpp没有移植到5.0的原因 我看很多人眼馋5.0的rtsp流 所以先把这个功能简单的工程分享出来
      在以后的版本中 还要做rtsp/rtmp推流外部服务器 rtmp流服务 mp4录制 等等等
      因为rtmp流服务用nginx服务器 nginx本身还是个http服务器 所以还会顺带上web搭建 在web上播放视频 在web上展示配置板子状态 用C艹写web后端
      这所有的一切 将在这个64M内存的芯片上实现
      我们的征途是星辰大海

      羁绊
      起初 我是在一些技术群 看到tinyvision的宣传资料 想看看生态如何 但又没有看到相关的交流群
      然后到百问网的群里碰运气问问情况 没想到百问网的世玉轩找到了我 解答了我的问题 还送了我一套板子 你这是干什么 真是太客气了

      最后感谢前人的努力
      感谢百问网和yuzuki大佬联合出品的TinyVision
      感谢百问网赠送的TinyVision及官方配件
      感谢全志在线和yuzuki大佬提供整理的sdk资料

      newcastle 1 条回复 最后回复 回复 引用 分享 6
      • newcastle
        newcastle LV 6 @lajuchenghui 最后由 编辑

        @lajuchenghui 大佬牛逼,有源码吗

        lajuchenghui 2 条回复 最后回复 回复 引用 分享 0
        • lajuchenghui
          逸俊晨晖 LV 5 @newcastle 最后由 编辑

          此回复已被删除!
          1 条回复 最后回复 回复 引用 分享 0
          • lajuchenghui
            逸俊晨晖 LV 5 @newcastle 最后由 编辑

            @newcastle 附件里有
            编译出来的程序
            程序源码
            拉流测试用的ffmpeg

            1 条回复 最后回复 回复 引用 分享 0
            • S
              soso90 LV 7 最后由 编辑

              不错,难得看到如此精彩帖子。后续可以调时延,时延上去了。就是产品级~ 据说能做到200ms?

              1 条回复 最后回复 回复 引用 分享 0
              • Referenced by  lajuchenghui lajuchenghui 
              • Referenced by  lajuchenghui lajuchenghui 
              • lajuchenghui
                逸俊晨晖 LV 5 最后由 编辑

                预期功能已经实现 详细内容在下一篇
                https://bbs.aw-ol.com/topic/5596

                1 条回复 最后回复 回复 引用 分享 0
                • D
                  dream LV 6 最后由 编辑

                  大佬,rtsp_lib 是你写的吗?有些眼熟哇。

                  lajuchenghui 1 条回复 最后回复 回复 引用 分享 0
                  • W
                    weifeng88 LV 3 最后由 编辑

                    @lajuchenghui 您好,非常感谢提供了这个IPC代码,请问TinyVisionIpcV1的版权是什么?我基于这个代码写了个录制H.264视频的代码,想用 MIT license 放到 github 上去,不知是否可以?

                    lajuchenghui 1 条回复 最后回复 回复 引用 分享 0
                    • lajuchenghui
                      逸俊晨晖 LV 5 @dream 最后由 编辑

                      @dream 那可不是 网上随便找的

                      1 条回复 最后回复 回复 引用 分享 0
                      • lajuchenghui
                        逸俊晨晖 LV 5 @weifeng88 最后由 编辑

                        @weifeng88 无限制 随意使用

                        1 条回复 最后回复 回复 引用 分享 0
                        • J
                          jaying LV 2 最后由 编辑

                          大佬 请问这个不安SDK的话 可以实现复刻吗?新手很多不太懂...
                          我现在直接执行测试,会报错Error loading shared library libvencoder.so: No such file or directory (needed by ./tinyvisionIpcV1)等等.so库异常,这个库也需要自己编译么?

                          1 条回复 最后回复 回复 引用 分享 0
                          • 1 / 1
                          • First post
                            Last post

                          Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

                          行为准则 | 用户协议 | 隐私权政策