2019年10月

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/26/

转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


概述

      本地拉取相机是"小雉视频系统"自定义的一种相机类型,此相机类型可以使用通过rtsp,gb28181接入的一个到多个视频流作为输入,然后对这些输入的视频源按一定的规则(如旋转,拉伸)绘制在目标图上,实现图像拼接,分辨率和帧率调整等业务;

      本地拉取相机是以"小雉视频系统"本身接入的视频源作为输入源,而"小雉视频系统"是一个单进程应用,多个本地拉取相机对同一个视频拉取是共享同一份内存的,只需解码一次,如有需求对一视频源叠加不同的水印后作为两路新流输出,则可创建两路本地拉取相机实现这一需求;


两种不同水印叠加后作为两路新流输出

  1. 假设"小雉视频系统"已经使用rtsp接入了一路uuid为src的视频流,如下图所示

  2. 新建一路"本地拉取相机",分别命名为out1,拉取src的流,并在左上脚添加out1的水印,如下图所示
  3. 新建一路"本地拉取相机",分别命名为out2,拉取src的流,并在左上脚添加out2的水印,如下图所示

      如上实现了src拉取rtsp视频流,并解码,out1和out2拷贝src解码后的视频分别进行水印叠加后编码,最后输出新的视频流out1和out2.


分辩率和帧率修改

      本处对out1的分辩率和帧率进行修改,如下图


图像旋转

      本处对out1的图像进行旋转30度,如下图


双图像拼接

      本处以out1的图像为例;

  1. 拉取src两次(也可拉取不同的视频源,如out2也能被拉取),如下图
  2. 以下操作比较复杂,这里把out1拖拽出来生成新界面来配置,操作:鼠标左键按住菜单栏的"out1"选项卡拖拽到菜单区以外放开,如下图
  3. 右键"相机配置"选择"切图配置",如下图
  4. 在图新配置上可以对两图像的相对位置进行调整,也能改变其长宽,进行旋转,右键画区域等,如下图的一个示例
  5. 保存配置后,用vlc查看的效果如下

      同此节方法可实现多相机的图像拼接.

猜您可能喜欢

小雉系统安装:http://www.feitianzhi.com/boke/index.php/archives/11/
小雉系统网络配置:http://www.feitianzhi.com/boke/index.php/archives/15/
小雉系统硬盘配置:http://www.feitianzhi.com/boke/index.php/archives/16/
小雉系统远程升级:http://www.feitianzhi.com/boke/index.php/archives/14/

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/25/

转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


editbin

这是 Visual Studio 2017 采用的做法。我们需要使用到两个工具——editbin 和 dumpbin。前者用于编辑我们编译生成好的程序使之头信息中声明支持大于 2GB 内存,后者用于查看程序的头信息验证我们是否改好了。

编辑一个程序使之声明支持大于 2GB 内存的命令是:

editbin /largeaddressaware xxx.exe

其中,xxx.exe 是我们准备修改的程序,可以使用相对路径或绝对路径(如果路径中出现空格记得带引号)。

验证这个程序是否改好了的命令是:

dumpbin /headers xxx.exe | more

同样,xxx.exe 是我们刚刚改好准备检查的程序,可以使用相对路径或绝对路径。

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/24/

转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


      目前恩山上本人使用较多的固件为Padavan,PandoraBox,Bootloader部分则使用H大的Breed,这些固件使用起来体验极好,接下来浅谈一下个人对这些固件的看法,若有不当之处,还请指出

Breed部分的介绍将在下文刷机过程中展示

      PandoraBox是基于OpenWrt进行了大量国内路由适配的系统,其界面接近原生系统,并针对国情内置了不少实用的组件,通过opkg管理组件,全面汉化,翻译水平比原生系统高出不少,软件源在国内,所以下载速度较快,时区和信道都按照国内的标准预先修改了,所以对于大部分人来说,直接刷PandoraBox即可,不必费力刷原生OpenWrt,而且据说PandoraBox采用的无线驱动优于原生,对此没有太确定的消息,仅作参考

      Padavan俗称老毛子,其界面友好度极高,非常适合新手入门,不过默认主题略丑,好在可以更换,而且看起来不错,同样针对国情加入了大量组件,对332支持极好,不过扩展性较OpenWrt略有不足,但对于新手来说足矣

      我使用Padavan和PandoraBox近一年,但折腾的心是不会停止的,所以现在准备给R3G刷入原生OpenWrt,但根据OpenWrt官网上的资料和H大的某些回复来看,Breed刷OpenWrt略有困难,其原因在于给OpenWrt提交R3G支持的人,提交的flashlayout跟原厂的不兼容,而且使用了UBI,因此breed无法兼容,故breed不支持直接刷入mir3g的openwrt固件,且无法识别tar包
详情可见下方链接
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=267455&page=1

      但此楼里有另一位大神提出了一种新的思路,见第三页aatest123的回复,其思路在于通过Breed先刷入initramfs-kernel.bin,这个文件集内核kernel和文件系统rootfs为一体,在引导期间将文件系统放在内存中,但由于内存断电后无法保存数据,所以该系统的所有设置无法保存,仅适用于不驱动flash的情况下使用,我们先通过Breed刷入该临时OpenWrt系统,重启路由器即可进入该临时系统,通过luci界面,选择系统更新,上传安装openwrt-18.06.4-ramips-mt7621-mir3g-squashfs-sysupgrade.tar(此为写此文时最新版本,可更换)
附件在此:https://pan.baidu.com/s/1SkF7WOt5GkIw6f68JP7viA 提取码: npp5

      随后路由器会自动重启,但登录后会发现进入的仍然是临时OpenWrt,这是因为Breed在刷入临时OpenWrt时刷入的是路由器的kernel0,而我们通过临时OpenWrt安装正式系统刷入的是kernel1,接下来我们将路由器断电,进入Breed(具体进入方法见Breed安装),启用环境变量,添加环境变量xiaomi.r3g.bootfw,其值为2,其目的在于使Breed启动后从kernel1启动,接下来重启,即可进入正式版OpenWrt系统,折腾第一步结束

      接下来是我当时安装时各种参考的资料分析,以及遇到的一些坑,毕竟我只能算是一位爱好者,没有接受过计算机技术教学,对于编译等东西一窍不通

      首先说说OpenWrt官网上对于R3G安装的操作,官网上的操作是针对原厂Bootloader和原厂固件的,故对于安装了Breed的我们来说,照抄是万万不行的,官网上提供两个文件,分别是mir3g-squashfs-kernel1.bin和mir3g-squashfs-rootfs0.bin,官网上的命令为:

mtd write mir3g-squashfs-kernel1.binkernel1
mtd write mir3g-squashfs-rootfs0.binrootfs0
nvram set flag_try_sys1_failed=1
nvram commit
reboot

      上述命令中nvram是uboot专有命令,Breed与uboot相互独立,参数不共用,根据国外论坛对于小米路由器原厂uboot的分析,小米路由器的kernel0包含的usb恢复的功能,就是将官方固件命名为miwifi.bin放入U盘内,断电时插入路由器,用硬物抵住reset键后插电,保持10秒左右,待黄灯快速闪动后可松手,可恢复至官方固件,这个功能可用于原厂固件损坏后的修复,也算是不错的功能,所以OpenWrt官网上的建议是将内核文件刷入kernel1

      接下来说说Breed的参数,根据H大的回复,breed的启动流程如下:
      如果kernel0存在kernel1不存在,那么启动kernel0
      如果kernel1存在kernel0不存在,那么启动kernel1
      如果kernel0和kernel1都存在,那么检查环境变量 xiaomi.r3g.bootfw的值,如果存在且值为2,那么启动kernel1,否则启动kernel0

      关于操作前的备份指令
      cat /proc/mtd:读取路由器内部分区
      插入U盘(FAT/FAT32)
      输入【df -h】查看查看U盘的分区路径
      或者输入"cd /"回车,再输入"ls -a"查看到extdisks文件,再"cd extdisks"进入到extdisks文件里用"ls -a"就能查看到你的U盘路径,我的是sda4,以下以我自己U盘的路径为例:
      备份(请自行修改回你自己的U盘路径):

dd if=/dev/mtd0 of=/extdisks/sda4/ALL.bin
dd if=/dev/mtd1of=/extdisks/sda4/Bootloader.bin
dd if=/dev/mtd2of=/extdisks/sda4/Config.bin
dd if=/dev/mtd3 of=/extdisks/sda4/Bdata.bin
dd if=/dev/mtd4of=/extdisks/sda4/Factory.bin
dd if=/dev/mtd5 of=/extdisks/sda4/crash.bin
dd if=/dev/mtd6 of=/extdisks/sda4/crash_syslog.bin
dd if=/dev/mtd7of=/extdisks/sda4/reserved0.bin
dd if=/dev/mtd8of=/extdisks/sda4/kernel0.bin
dd if=/dev/mtd9of=/extdisks/sda4/kernel1.bin
dd if=/dev/mtd10of=/extdisks/sda4/rootfs0.bin
dd if=/dev/mtd11of=/extdisks/sda4/rootfs1.bin
dd if=/dev/mtd12of=/extdisks/sda4/overlay.bin
dd if=/dev/mtd13of=/extdisks/sda4/ubi_rootfs.bin
dd if=/dev/mtd14 of=/extdisks/sda4/data.bin

      备份到最后一个mtd14可以会出现如下出错提示:
dd: can't open '/dev/mtd14': Device or resourcebusy
      该分区备份不成功无所谓,关键的mtd0-mtd4备份下来就行了。
      如果还在官版的固件下想恢复的,可使用如下命令:
      恢复(这里我们不需要该步骤,只是给有需要的人看的官版固件下的恢复步骤)

mtd write /extdisks/sda4/Bootloader.binBootloader
mtd write /extdisks/sda4/Config.bin Config
mtd write /extdisks/sda4/Bdata.bin Bdata
mtd write /extdisks/sda4/Factory.binFactory
mtd write /extdisks/sda4/crash.bin crash
mtd write /extdisks/sda4/crash_syslog.bincrash_syslog
mtd write /extdisks/sda4/reserved0.binreserved0
mtd write /extdisks/sda4/kernel0.binkernel0
mtd write /extdisks/sda4/kernel1.bin kernel1
mtd write /extdisks/sda4/rootfs0.binrootfs0
mtd write /extdisks/sda4/rootfs1.binrootfs1
mtd write /extdisks/sda4/overlay.binoverlay
mtd write /extdisks/sda4/ubi_rootfs.binubi_rootfs
mtd write /extdisks/sda4/data.bin data

Breed

      https://www.right.com.cn/forum/thread-161906-1-1.html
      这是一个非常易用的Bootloader,针对刷机主流型号进行了适配,内置DHCP服务,拥有Web图形化界面,小白也能轻松刷机,并且支持Telnet,wget等功能,可以通过TTL进行操作,具体介绍可见上述网址,选择仅看楼主,里面包含绝大多数关于Breed的资料,就不在此赘述

      如何在R3G内刷入Breed

      首先小米路由器需要开启ssh,此类教程在网上极多,是基本功,在此不多说了
      首先需要下载支持小米路由器3G的Breed,可从H大搭建的服务器https://breed.hackpascal.net/ 内下载,其型号是breed-mt7621-xiaomi-r3g.bin
      接下来通过WinSCP将文件上传至路由器内部,注意将文件协议选择为SCP,我通常将文件上传至/tmp目录下,建议将文件改名为Breed.bin,便于后续操作
      输入mtd write /tmp/breed.bin Bootloader,将Breed刷入Bootloader
若输入mtd -r write /tmp/breed.bin Bootloader,-r意味着刷入后直接重启,一旦刷错难以补救,所以建议不要加入-r,待完      全确认后再手动断开电源
      在接入电源线之前用硬物顶住路由的reset键再接电,等到路由器的指示灯狂闪的时候,松开reset键,电脑上在浏览器中输入192.168.1.1,即可进入Breed控制台

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/23/
转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


使用 GRUB2 安装 Ubuntu 18.04

      使用 GRUB2 安装 Ubuntu 18.04 的原因是机器上已经有 Ubuntu 16.04 在了,GRUB 引导自然也是有的。我以往常使用传统硬盘安装的方式, GRUB2 本身是硬盘安装的一种方式,只是引导器选择了GRUB2。好处是只要有 ISO 的安装镜像就可以了,不需要像传统的方法从源里新下载适用于硬盘的引导 vmlinux & initrd, 它们俩一般在 hd-media 目录,如下是阿里云 Ubuntu 18.04 的路径。

      https://mirrors.aliyun.com/ubuntu/dists/bionic/main/installer-amd64/current/images/hd-media/

流程

  • 下载 Ubuntu 18.04 镜像,更名为 Ubuntu-18.04.iso, 放在某盘根目录。
  • 进入 GRUB2, 在界面按提示 C 进入 Command Mode
  • ls (hdxx, msdosxx)/, 寻找 Ubuntu-18.04.iso 的存放路径。本次为 (hd2, msdos1)
  • 执行指令

    loopback loop (hd2, msdos1)/Ubuntu-18.04.iso
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/Ubuntu-18.04.iso
    initrd (loop)/casper/initrd.lz
    boot

说明:

(loop)后的路径,依据 vmlinuz & initrd.lz 实际的来。可以 tab 自动补全,或 ls 查看。
linux 指令后,没有增加其它指令(quiet splash)。好处是在运行过程中,有 LOG 。解决了我因为打印机连接而 Pending 的问题。