nfs挂载文件出错
在uboot中设置
12bootargs,setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.8.213:/home/ygc/Desktop/driver/nfs/rootfs,proto=tcp rw ip=192.168.8.50:192.168.8.213:192.168.8.1:255.255.255.0::eth0:off'
但是引导后出现nfs挂载网络根文件系统是出现错误。
1234Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)random: nonblocking pool is initialized
经过各种试验发现是nfs服务的问题。
原因是:ubuntu18.04只支持nfs 3 ...
常见问题汇总
1、挂在busybox的时候出现内核崩溃
解决办法, 原因为没有使用交叉编译器进行编译,在Makefile中定义一下
123CROSS_COMPILE ?= arm-linux-gnueabihf-ARCH ?= arm
如果不定义,需要在编译的时候加上CROSS那一串。
2、popen函数引发僵尸进程目前没有好的办法,将调用频率降低,或者使用fork函数。
头文件顺序不对编译报缺少相关库头文件顺序不对,导致编译错误。如系统库必去系统库先,否则会出现缺少库的错误,或者编译错误。
立即数乘除加减产生溢出如64位整数相乘
123int64_t a = 1;int64_t c = a * 10;/* c 不一定等于 10 */
正确的写法
12int64_t a = 1;int64_t c = a * 10ULL;
锁竞争与饥饿锁竞争,是指多个进程同时访问同一资源,导致多个进程等待锁的释放,从而导致进程的等待时间过长,从而导致系统资源被饿死。带锁的进程不能频繁的解锁和上锁,需要加休眠或者延迟。
你现在明确了核心问题:程序中高频加解锁的线程没有任何休眠或延迟,会持续、无间断地争抢并持有锁, ...
问题总结
1、隐式函数错误一般原因写驱动的时候经常遇到报隐式函数的报错,很麻烦,查找了很多原因,一般是函数拼写错误。
2、system命令导致系统问题system会导致系统出现严重的性能消耗,如果在程序中调用,需要单独开启一个线程进行使用,否则会生不可知错误。
3、结构体易错点3-1、第一个易错点采用memset函数初始化结构体,全部成员变量的值清零。
12memset(&queen,0,sizeof(struct st_girl));
注意事项,如果把一个结构体的地址传给子函数,子函数用一个结构体指针(如struct st_girl *pst)来存放传入的结构体的地址,那么,在子函数中只能用以下方法来初始化结构体:
1memset(pst,0,sizeof(struct st_girl));
不能用以下方法来初始化结构体:
1memset(pst,0,sizeof(pst));
因为子函数中用sizeof(pst),得到的不是结构体占用内存的字节数,而是结构体指针变量占用内存的字节数(8字节)
3-2、第二个易错 ...
xml语法规则
xml读写规则 # 避免 “:” 字符。冒号会被转换为命名空间来使用 表格定义:标签结构 数据对应:指定元素
所有的标题都用<>来表示。
示例
<新闻>
<新闻>
<id><1001><\id>
<标题><尚......><\标题>
<>......
......
<\新闻>
<id><1002><\id>
<标题><JAVA......><\标题>
<>......
...
AAC音频格式详解
1、格式头头名字叫ADTS,如下格式:
1aac_data:ff f9 6c 40 16 ff fc 1 8 9e d8 12 76 2c 12 41 e8 ff 0 43 5d 43 49 48 5 92 b1 b2 85 ae ce 47 65 93 15 c6 cb a0 a8 82 b7 a 4e e0 cf 15 99 b0 66 fc c6 79 5e 6a 7e 74 93 1e 4d 9b 5c 4e f2 ca 7d d1 3a 77 b3 6b 29 54 51 bc fe 9e 72 77 91 19 ab 18 85 ad 10 9c 56 b6 87 6b d4 40 14 e5 d5 99 a 4b 1f 5d
以ff f9开头。储存了音频的采样率、声道数、采样位数等信息。长度为7个字节。
如果要将 AAC 数据通过 RTP 发送,一般都需要 ADTS。如果要写入 .aac 文件供播放器识别,也需要 ADTS。如果要写入 MP4,则应去掉 ADTS,改用 AAC LATM 或容器本身的描述方式。
第一个字节固定ff。
ffmpeg
示例ffplay -ar 8000 -ac 1 -f mulaw out.g711u-ar 指定音频采样率-ac 指定音频声道数-f 指定音频格式,这里使用mulaw格式
将wav音频转换为mulaw格式(g711u)ffmpeg -i input.wav -ar 8000 -ac 1 -acodec pcm_mulaw output.ulaw-i 指定输入文件-ar 指定音频采样率-ac 指定音频声道数-acodec 指定音频编码格式,这里使用pcm_mulaw
将mp3音频转换为wav格式,再转为mulaw格式才行,直接转有概率转的不对ffmpeg -i song.mp3 -ar 8000 -ac 1 -ab 8 song.wav-i 指定输入文件-ar 指定音频采样率-ac 指定音频声道数-ab 指定音频码率
PCM(脉冲编码调制)在FFmpeg中有以下常见类型:pcm_s16le16位有符号小端格式(Signed 16-bit Little Endian),常用于WAV文件的默认编码。
pcm_s16be16位有符号大端格式(Signed 16-bit Big Endian), ...
mjpeg和jpeg
MJPEG 和 JPEG 不是“两种独立的图片格式”——JPEG 是单张图片的压缩格式,而 MJPEG 是基于 JPEG 技术的视频编码格式(本质是“连续 JPEG 图片的序列”),核心关联但用途完全不同。
简单说:JPEG 处理“单张图”,MJPEG 处理“多张 JPEG 图组成的视频流”。
一、核心区别:单张图 vs 视频流
维度
JPEG(Joint Photographic Experts Group)
MJPEG(Motion JPEG)
本质
单张静态图片的有损压缩格式
视频编码标准(序列图片压缩)
处理对象
单幅图像(如 .jpg/.jpeg 文件)
连续图像帧(视频流)
存储/传输形式
单个文件(.jpg)
视频流(如 RTSP/MJPEG 流)或视频文件(如 .avi 封装的 MJPEG)
压缩逻辑
对单张图做帧内压缩(DCT 变换+熵编码)
对每帧图片单独用 JPEG 压缩,帧与帧无关联(无帧间预测)
核心用途
存储静态图片(照片、截图等)
实时视频传输(如摄像头推流)、低延迟场景(如工业质检)
特点
体积 ...
音视频原理入门
入门基础视频视频帧率视频帧,帧率,帧率一般电视在25帧/秒,电影在24帧/秒,1080P 60帧/秒,720P 30帧/秒。过高无意义。
色彩空间常见的两种色彩空间:RGB 和 YUV。RGB是彩色空间,RGB三通道,R为红色,G为绿色,B为蓝色。早期的电视都是黑白的,YUV只有Y亮度值,后来加入两种色度UV,也叫YCbCr。色度定义了颜色的两个方面:色度,饱和度。Cr:反应的是输入信号红色部分与RGB信号之间的差异。Cb:反应的是输入信号蓝色部分与RGB信号之间的差异。
总结:Y:亮度,也代表一定程度的绿色通道量。U:与蓝色部分之间的差异。V:与红色部分之间的差异。
人眼对亮度的敏感度更高,对色度敏感度较低。
RGB和YUV进行线性量化转换。
音频音频数据的承载方式最常见的就是脉冲编码调制,也就是pcm。pcm的采集可以分为以下模拟信号->采样->量化->编码->数字信号
采样率根据采样的奈奎斯特定理,采样率必须大于等于2倍的信号频率。人耳20Hz到20KHz之间可以听清。
采样率,就是采样的频率。
采样位数这个直接涉及 ...
ffmpeg移植
1、音视频入门1-1、视频
动画书静态小人书,通过快速翻动,形成动态效果。— 视频原理
视频将一些列的静态影像以电信号的方式进行动态捕捉
一、扩展ffmpeg1ffmpeg -f v4l2 -r 30 -s 640x480 -i /dev/video0 -f alsa -ar 44100 -ac 2 -i default -c:v libx264 -preset medium -tune zerolatency -c:a aac -b:a 128k -f nut - | ffplay -
ffmpeg移植ffmpeg的移植依赖于x264和x265
1、移植x264下载源码,创建build.sh脚本,内容如下。
12345678910111213141516#!/bin/bashmake cleanpath="/home/ygc/Desktop/linux-gcc/2021-6ull/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin"set_path=${PWD}/../expo ...
onvif协议
probe为onvif连接时,会产生一个广播,一般情况下不影响整个协议。
WSDL的web服务公共接口。
之间的关系,onvif协议以soap协议为基础,
而soap又是用WSDL进行规范,所以onvif相当于
规范了WSDL。
理解上:onvif = 服务端 +客户端 =(web services + rtsp)+ 客户端 =( (WSDL + soap)+
rtsp)+ 客户端
WSDL是服务端用来向客户描述自己实现那些请求,发送请求时需要带上那些参数xml格式
soap是客户端向服务器端发送请求时xml的参数格式。
web services是实现摄像头控制(比如一些参数配置、摄像头上下左右(PTZ)控制);rtsp
实现摄像头传输,web services指ipc控制到具体的技术实现,进行技术交互,其实和http差不多,
客户端类似http post的格式向服务端发送请求,然后服务端响应客户端请求。
onvif中的profiles是什么?
onvif提供了很多的profiles概要文件,用来规范onvif设备端与onvif客户端的通信标准。目前已经发
布的profile文件主 ...













