自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (11)
  • 收藏
  • 关注

原创 zlm源码研究 - webrtc播放

WebRTC的好处不用在此描述了,zlm作为流媒体服务器对其支持的已经非常好了。接下来主要研究web端拉流的情况。

2023-03-06 17:54:43 824 1

原创 zlm源码分析 - 网络

探索zlm网络相关内容。

2023-02-25 18:20:53 212

原创 zlm源码分析 - poller

分析zlm源码中poller运行机制。

2023-02-25 17:38:01 318

原创 zlm源码研究: rtsp --> rtmp

记录zlm转协议的流程,以rtsp推流转rtmp为例,视频为H264,不考虑音频。

2022-08-12 10:51:48 2782

原创 PS流封装

概述背景由于工作需要,研究国标28181有半年多啦,里面涉及的媒体封装为不太常用的PS。通过研究协议文档及网上相关优秀的文章,结合自己的理解,整理记录如下。如理解有偏差,请指正。封装定义缩写全称描述PSProgram Stream节目流ESElementary Stream原始流:如H264 / G711PESPacketized Elementary Stream分组的原始流PES packetPES packetPES包。用于携带基本流数

2022-05-17 17:09:12 1313

原创 C++基础知识 - map

概述map是典型的关联容器关联容器的特点是,按照关键字保存和访问。底层结构是用红黑树实现。map还是有序容器默认情况下,标准库使用关键字类型的<运算符来比较两个关键字。所以,关键字的类型需要定义“正常行为”的<运算符。所有元素都会根据元素的关键字值自动排序。map中所有元素都是pairpair中的第一个元素为key(关键字),起到索引的作用,第二个元素为vaule(值)。不重复map中不允许容器中有重复关键字元素。创建类别声明empt

2021-11-27 18:17:51 632

原创 C++基础知识 - vector

概述vector,直译为向量,我们一般称为动态数组,一般不去翻译,直接使用vector称呼。它是STL诸多数据结构中使用最广泛的几个数据结构之一。C++编程规范中指出,如果你不知道使用哪个容器合适,就使用vector吧。无论从使用的方便程度和效率上,都可圈可点。下面详细学习该数据结构,以C++11为准。创建构造函数:类别声明default (1)explicit vector (const allocator_type& alloc = allocator_type()

2021-11-27 14:36:20 788

原创 交叉编译tcpdump

下载官网https://www.tcpdump.org/需要两个包libpcap-1.10.1.tar.gztcpdump-4.99.1.tar.gz编译pcap库tcpdump依赖pcap库./configure CC=arm-hisiv500-linux-gcc --prefix=/root/test/tcpdump/install --host=arm-linux --with-pcap=linux报错configure: error: Neither flex nor le

2021-11-03 13:40:22 298

原创 RTMP协议分析

概述RTMP全称:Real Time Messaging Protocol。整个协议有两个重要的概念,消息和数据块。消息(Message)RTMP是基于消息的协议,不论命令还是数据,均是通过封装成消息展现的。数据块 (Chunk)消息通过网络传输时,需要拆分成若干数据块。这样可以实现多路复用,保证优先级,但是,也增加了实现难度。消息和数据块的关系:消息消息 = 消息头 + 有效负载。消息头的格式如下: 0 1

2021-10-22 16:30:31 204

原创 Git 常用操作

背景使用Git挺长时间了,也只是基于常用的简单命令,现按照自己的理解整理如下,方便查阅。如有问题,请指正。初始化创建本地仓库git init # 在当前目录下创建.git隐藏目录及子目录和文件分支查看分支git branch # 该命令会列出本地所有分支,前面带*的为当前分支git branch -r # 查看远程分支列表git branch -a # 查看所有分支列表,包括本地和远程git branhc -vv # 查看本地分支对应的远程分支创建分支git branch

2021-08-21 17:56:11 131

原创 Livego环境搭建

Go环境搭建下载网站https://golang.google.cn/dl/安装tar xvf go1.16.6.linux-amd64.tar.gz -C /usr/local配置环境变量# GOROOT是系统上安装Go软件包的位置export GOROOT=/usr/local/go# GOPATH是工作目录的位置,可配置多个目录export GOPATH=$HOME/go# 把$PATH放到最后,可以屏蔽之前安装的版本export PATH=$GOROOT/bin:$GOPA

2021-07-24 17:05:35 778 2

原创 LVGL源码研究 - 初探

背景在上一篇中成功运行了LVGL自带的Demo,这次从Demo的程序入口进行初步分析。入口主函数int main(int argc, char **argv) // lvgl初始化 lv_init(); // 硬件初始化:包括显示设备、输入设备 hal_init(); // 选择一个Demo运行 lv_demo_widgets(); // 周期性运行lv_timer_handler接口,该接口内部主要处理:绘制、获取输入信息等 while (1) lv_ti

2021-07-06 15:09:00 7259

原创 LVGL模拟器

背景LVGL是偶然间发现的轻量级的,用C语言面向对象思想编写的完全开源的GUI。可以在单片机、Linux上通吃,感觉还不错,准备研究一下。首先,就是感受一下效果。目前,还没有类似于Qt Creator之类的IDE,不过有基于Eclipse、VS等做的模拟器。网上很多都是基于这两个IDE做的例子,从开始学习编程就是在Linux,不太习惯windows,还好有VScode。LVGL也有基于VSocde的模拟器。说是模拟器,其本质就是通过VScode来编译并运行程序而已。底层使用的SDL2,来模拟显示设备。

2021-07-06 14:13:06 3420 1

原创 sqlite3 研究一

背景由于项目中使用sqlite,而且使用的比较频繁,虽然有别人的项目中的例子作为参考,但是,自己不熟悉毕竟心理没有底,趁这个机会,好好学习一下。虽然这个数据库是很小的,但是要想用好它,也必须好好研究一番,网上的例子都是些小儿科。在此,以官网的doc为例,增删改查挨个测试一遍,以经典的学生信息为例吧API创建数据库打开一个数据库,没有的话,就创建。使用的API为:int sqlite3_open( const char *filename, /* Database filename (UTF

2021-06-25 16:59:45 147 1

原创 NTP同步时间

背景服务器运行一段时间后,系统时间变慢。需要同步网络时间,使用的服务就是ntp。同步查看当前时间# dateThu Jan 9 13:51:58 CST 2020安装工具,默认是安装了的yum install -y ntpdate同步ntpdate -u ntp.api.bz-u: 参数说明:指定使用无特权的端口发送数据包。 当在一个对特权端口的输入流量进行阻拦的防火墙后是很有益的, 并希望在防火墙之外和主机同步。防火墙是一个系统或者计算机,它控制从外网对专用网的访问。ntp

2021-06-25 16:10:44 284

原创 crontab基础用法

简介crontab是Linux的shell命令,非常的实用,简单的来说是用来定时,什么时间执行什么命令之类的。服务Linux默认是装有crontab的,通过下面的方式进行启动即可。命令crobtab -l 在标准输出上显示当前的crontabcrontab -e 编辑当前的crontab文件,编辑后将自动安装目前用的比较多就是这两条命令。格式域中除了可以写入数字,还可以写入特殊符号,包含: “ * / - , ”:* 代表所有的取值范围内的数字/ 代表每的意思- 代表

2021-06-25 16:05:30 126

原创 搭建Samba

Centos6 上搭建Samba服务器#!/bin/shsed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/configsetenforce 0yum install samba -y service smb start echo "admin " | useradd -s /sbin/nologin admin echo "admin " | smbpasswd -a adminchown admin.adm

2021-06-25 15:57:52 90

原创 粗略分析ffplay源码

背景研究FFmpeg源码有段时间了,云里雾里。先修整一下,分析一下ffplay源码。这次分析没有深入细节,注重的是框架结构。使用ffplay -i rtmp://172.16.11.97:1935/myapp/123源码分析main入口// 通过解析输入参数,获取文件名称,文件格式是NULLVideoState *stream_open(const char *filename, AVInputFormat *iformat) is = av_mallocz(sizeof(VideoSta

2021-05-24 15:58:15 145

原创 搭建Nginx-Rtmp 流媒体服务器

背景如果学习研究或者对流媒体服务器要求不高的情况下,可以直接拿NRM作为服务器,它是基于Nginx这个经典的开源软件作为平台,以模块的形式,实现的RTMP的流媒体服务器。接下来,搭建此服务器,通过OBS推流,VLC拉流。当然,如果在工程中使用,完全可以自己实现推流和拉流的功能。安装并运行NRM下载Nginxhttp://nginx.org/en/download.html下载NRMhttps://github.com/arut/nginx-rtmp-module安装依赖包apt-get

2020-07-31 17:46:39 327

原创 Linux下Qt creator搭建FFmpeg环境运行FFplay

背景为了研究ffplay的源码细节,打算使用Qt Creator这个IDE中运行并调试打印ffplay,深入研究ffplay的播放细节。解决的思路是:编译出ffplay编译依赖包(FFmpeg,SDL2),新建工程,在工程引入对应的头文件及库,编译运行ffplay。安装SDLffplay底层使用的SDL进行渲染显示的,所以需要首先安装SDL。官网http://www.libsdl.org/编译# cd SDL2-2.0.12# ./configure# make ; make inst

2020-07-30 17:57:59 1847

原创 Linux下操作串口

背景嵌入式Linux开发,绕不开串口操作。代码#include <stdio.h>#include <string.h>#include <stdlib.h>#include <termios.h>#include <sys/time.h>#include <sys/types.h>#include <...

2020-01-18 20:10:56 253

原创 Linux下操作GPIO

背景嵌入式Linux下需要经常操作GPIO管脚,其中一种方式是使用/sys/文件系统下内核暴露出来的gpio文件。代码#include <stdio.h>#include <string.h>#include <stdlib.h>#include <termios.h>#include <sys/time.h>#inclu...

2020-01-18 20:07:05 266

原创 Bananapi R2 定制系统

背景由于项目需要使用了Banana Pi R2这块板子。参考的资料主要是官方的wiki、GitHub以及论坛。官网:http://banana-pi.org/Wiki:http://wiki.banana-pi.org/Main_Page论坛:http://forum.banana-pi.org/镜像:https://dev.banana-pi.org.cn/Image/BPI-R2/...

2020-01-18 19:58:29 1640

原创 stm32f103 w5500 tcp server

背景项目中需要使用网络,开始使用的stm32f4+lwip的方案,但是硬件成本有些高,更主要的是lwip不好用,老是断,可能是自己没有研究透它吧。经过长时间的调研论证,最终选择了w5500这款芯片。它把TCP/IP网络协议栈固化在了硬件芯片中,为用户留出应用层接口,简单稳定。移植过程首先,从https://w5500.com/上下载芯片手册和参考代码了解芯片的原理及基本用法,内容不是很复杂。...

2019-07-13 11:45:54 3668 4

原创 STM8L驱动I2C类型的12864

原理之前没有操作过12864这种类型的屏,但是,操作过其他类型的,原理都是相通的。12864是拥有128x64像素点这类屏幕的称号吧。屏幕有64行,128列;每个汉字是16x16,所以一个这样的屏,最多可以显示4x8的汉字或者8x16的字符。我使用的是不带字库的I2C接口的屏幕,主芯片是ST7656。这样的屏,只能写,不能读。先配置屏幕,然后通过字模制作软件制作出待显示内容的像素数字,最后,通...

2018-11-25 11:33:43 806

原创 STM8L串口中断进不去

配置串口void UART1_Config(void){ /*Enable USART clock */ CLK_PeripheralClockConfig(CLK_Peripheral_USART, ENABLE); USART_DeInit(); USART_Init((uint32_t)9600, USART_WordLength_8D, USART_StopBi...

2018-11-25 10:51:12 2399

原创 STM8L10x环境搭建

准备STM8的编译环境有两种,一个是IAR,一个是ST官方提供的STVD+COSMIC.由于IAR需要破解,我选择了使用官方提供的环境STVD。STVD:IDE,可以从ST官网下载COSMIC: 编译器,可以从它的官网下载。http://www.cosmic-software.com/download.phpstm8_stdperiph_lib:标准库,这个也可以从ST官网下载,不同型...

2018-11-25 10:32:15 1053 1

原创 Raspberry官方屏旋转90°

背景买了树莓派3B主板和官方7寸触摸屏,希望显示自己编写的Qt程序。烧写Raspbian系统,设置好基本配置,发现屏幕不能90°或270°旋转,即不能竖屏显示,只能是180°。网上说设置/boot/config.txt配置文件中的lcd_rotate=1就可以实现90°,不知道他们有没有真正实现过,我试验了,行不通的。display_rotate=1可以实现90°旋转,但是触摸没有旋转,不能正...

2018-04-05 21:17:12 2333 1

原创 README.falcon

U-Boot Falcon ModeIntroductionThis document provides an overview of how to add support for Falcon Mode to a board.Falcon Mode is introduced to speed up the booting process, allowing to boot a Linux ker

2017-09-10 08:33:21 841

原创 falcon模式

简介在该模式下,SPL可以直接加载内核,开机时间较少不少。目前该模式支持的芯片不多,但是TI的AM335x是其中之一,网上资料也不不多。u-boot-2016.09中有两处有关资料。doc/README.falcon board/ti/am335x/README开启如果启动源为Nand,则默认开启该模式。该模式下需设置的环境变量和参数在README.falcon在有详细描述。设备树在使用传统的

2017-09-10 08:16:09 1960

原创 移植Qt

buildroot中配置Target packages ---> Graphic libraries and applications (graphic/text) ---> [*] Qt ---> [*] Approve free license Graphics drivers --->

2017-09-09 21:01:37 513

原创 buildroot

背景buildroot的基本功能是可以通过简单的配置即可创建出根文件系统。另外,还可以创建交叉编译器, 编译u-boot以及内核。关于buildroot的基础知识不再赘述,网上很多资料,不过,参考官网上的资料就足够了。交叉编译器创建首次使用时,需要buildroot创建交叉编译器。make beaglebone_defconfigmake menuconfigToolchain --->

2017-09-09 20:53:27 7909

原创 LCD的配置

lcd的驱动也不需要自己写,而是在设备树中配置好即可。设备树 panel { compatible = "ti,tilcdc,panel"; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&lcd_pins_s0>; panel-info {

2017-09-09 20:37:31 2295 1

原创 矩阵键盘

背景移植矩阵键盘。矩阵键盘的原理不赘述。设备树evm的板子上有一个2x3的矩阵键盘,设备树中也有体现。参考这个实现自己的矩阵键盘设备树如下: matrix_keypad: matrix_keypad@0 { compatible = "gpio-matrix-keypad"; debounce-delay-ms = <5>; col-scan-d

2017-09-09 20:33:52 1794 2

原创 usb的设置

背景设置usb0为host模式,支持u盘的热插拔。设置usb1为otg模式,支持设备作为u盘连接到电脑。 我对usb没有研究,但是linux内核对usb的支持非常强大,不需要修改代码,只需配置就可以实现。设备树首先,查看并设置usb的设备树 其中具体设置在am33xx.dtsi中usb: usb@47400000 { compatible = "ti,am33xx-usb

2017-09-09 20:23:46 3059

原创 内核移植

配置make omap2plus_defconfigvi MakefileARCH=armCROSS_COMPILE = arm-linux-make menuconfig裁剪不需要的功能make uImage LOADADDR=0x80008000在arch/arm/boot目录下生成uImage 接下来就是烧写uImage,验证功能是否正常。驱动如网卡和Nand不需要修改任何代码就可以

2017-09-09 20:15:20 353

原创 设备树

简介最新的内核配置基本上都是通过设备树了。这是个什么东西?简单说,就是描述硬件信息的配置文件。 该配置文件采用类似Jason的语法,来表述各个类型的硬件参数信息,如cpu、memory、nand、lcd等, 简单介绍下,具体可以参考官网上的spec。 每个硬件类型可以通过node来描述,node里面可以包括property和child node,以此类推。/ { model = "TI

2017-09-09 20:10:27 568

原创 u-boot移植

u-boot的基础知识前面已经分析完,接下来针对我们自己的板子进行详细的移植。修改代码eeprom由于板子中没有eeprom,所以下面这个函数需要修改。 board/ti/am335x/board.cstatic inline int __maybe_unused read_eeprom(void){ //return ti_i2c_eeprom_am_get(-1, CONFIG_SY

2017-09-09 20:02:58 629

原创 u-boot代码分析

简介项目中使用的u-boot版本是u-boot-2016.09,在该版本中引入了Kconfig,可以通过menuconfig进行配置。但是,遗憾的是,menuconfig还不够成熟,很多配置还是需要在.h配置文件中进行配置。u-boot文档中也说明了该情况,现在是把之前的配置方式往menuconfig上搬移的过程,但是需要一定的时间,希望早日完成。顶层的Makefile就不去分析了,网上相关资料很多

2017-09-09 19:46:45 494

原创 AM335x的启动过程

u-boot简介简单的说,u-boot的核心功能是加载内核。 为什么需要它,上电之后直接加载内核不可以吗? 虽然目前的内核没有这么做且理论上也可以实现,但没有必要这么做。 这就类似于几十万大军在行军,通常的做法是派出几千人的不断在前面探路,而非几十万大军一股脑的往前走。 总结一下,u-boot的作用,初始化各类的硬件,加载内核,在加载内核的同时,把硬件的基本信息通过参数的形式传递给内核。启动

2017-09-09 19:20:37 1009

rtmp_spec_1.0.pdf

rtmp spec 协议文档

2021-10-22

RTSP.rar RTSP协议文档,包括中文版和英文版,1.0版本的。

RTSP协议文档,包括中文版和英文版,1.0版本的。RTSP协议是音视频传输协议中重要的协议。比较常用的场景为IPC和NVR之间的码率传输。

2020-07-28

12864 字模软件

12864的字模软件,这么多字模制作软件中,还是感觉这个比较好用。

2018-11-25

12864_ST7656

12864屏幕的主芯片ST7656的数据手册,英文版,详细描述了具体的使用方式。

2018-11-25

Head First C#

Head First C# 高清英文版。。。。。。。。。。。。。。。。。。。。。。。。。。

2018-03-21

A20 User Manua

A20 User Manua

2017-10-22

buildroot_manual

buildroot_manual

2017-10-22

Hi3518EV20X

Hi3518EV20X/Hi3516CV200经济型HD IP Camera Soc用户指南

2017-10-22

SecureCRT8(含注册机)

SecureCRT8(含注册机)

2017-05-18

Linux内核源代码情景分析(上下册)

上下册高清版,值得学习。

2016-11-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除