Linux下,使用nginx+ffmpeg+video.js实现直播效果(含centos7环境配置步骤)

2023-05-16

 

前言

近来因为项目需要,需要做一个把视频解码然后推流,在浏览器播放的功能。然后查资料、找demo,最终决定使用FFmpeg+nginx来完成相应功能,过程颇为心酸,在此做下笔记,以备不时之需。

参考链接:nginx+ffmpeg搭建流媒体服务器(直播流)

nginx配置

一、软件包下载

首先需要安装gcc、g++编译器,后面的大部分编译工作都是编译器来完成的。因为我的环境中已经安装好了(搞嵌入式的,没有编译器还搞个什么劲 ^-^),在此不做赘述,相信大部分人的机器中也已经安装,对于没有安装的,yum -y install gcc gcc-c++即可。

新建目录  mkdir /root/install,进入目录

wget http://nginx.org/download/nginx-1.6.0.tar.gz
wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz
wget http://sourceforge.net/projects/pcre/files/pcre/8.35/pcre-8.35.tar.gz
wget http://zlib.net/zlib-1.2.11.tar.gz
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

以上链接可以直接下载。

二、安装

下载完成之后,解压缩:

tar.gz 解压缩方式:tar -zxvf  包名

zip 解压缩方式 unzip 包名

安装顺序 openssl--------prce--------zlib

./configure --prefix=/usr/local/XXX/
make 
make install

一般都是安装在/usr/local/下面,以库的名字命名的文件夹中

openssl安装过程出现错误:

POD document had syntax errors at /usr/bin/pod2man line 69.
make: *** [install_docs] Error 1

vim /usr/bin/pod2man

使用命令:set nu 显示行号,将70行注释掉即可。

 

将上述三个安装完成之后。解压剩下的两个包,并且将除了nginx-1.6.0之外的包全部移动到 /var/tmp目录下。

mv nginx_mod_h264_streaming-2.2.7 nginx-rtmp-module-master/ pcre-8.35 zlib-1.2.11 openssl-1.0.1g /var/tmp/

进入nginx-1.6.0

./configure --prefix=/usr/local/nginx --add-module=/usr/tmp/nginx_mod_h264_streaming-2.2.7 --add-module=/usr/tmp/nginx-rtmp-module-master --with-http_flv_module --with-http_mp4_module --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/tmp/pcre-8.35 --with-zlib=/usr/tmp/zlib-1.2.11 --with-debug --with-openssl=/usr/tmp/openssl-1.0.1g

执行完之后 make,在此过程中,出现了错误:

错误1

make[1]: Entering directory `/root/install/nginx-1.6.0'
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -D_LARGEFILE_SOURCE -DBUILDING_NGINX -I/usr/tmp/nginx-rtmp-module-master  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/tmp/pcre-8.35 -I /usr/tmp/openssl-1.0.1g/.openssl/include -I /usr/tmp/zlib-1.2.11 -I objs -I src/http -I src/http/modules -I src/mail \
	-o objs/addon/src/ngx_http_h264_streaming_module.o \
	/usr/tmp/nginx_mod_h264_streaming-2.2.7/src/ngx_http_h264_streaming_module.c
In file included from /usr/tmp/nginx_mod_h264_streaming-2.2.7/src/ngx_http_h264_streaming_module.c:2:0:
/usr/tmp/nginx_mod_h264_streaming-2.2.7/src/ngx_http_streaming_module.c: In function ‘ngx_streaming_handler’:
/usr/tmp/nginx_mod_h264_streaming-2.2.7/src/ngx_http_streaming_module.c:158:8: error: ‘ngx_http_request_t’ has no member named ‘zero_in_uri’
   if (r->zero_in_uri)
        ^
make[1]: *** [objs/addon/src/ngx_http_h264_streaming_module.o] Error 1
make[1]: Leaving directory `/root/install/nginx-1.6.0'
make: *** [build] Error 2

解决方法:

进入nginx_mod_h264_streaming-2.2.7的源代码:

vim /usr/tmp/nginx_mod_h264_streaming-2.2.7/src/ngx_http_streaming_module.c  158行

注释掉下面语句即可:
 if (r->zero_in_uri)   { 
    return NGX_DECLINED;  
 } 

错误2

/usr/tmp/nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c: In function ‘stsd_parse_vide’:
/usr/tmp/nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:529:22: error: variable ‘level_indication’ set but not used [-Werror=unused-but-set-variable]
         unsigned int level_indication;
                      ^
/usr/tmp/nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:528:22: error: variable ‘profile_compatibility’ set but not used [-Werror=unused-but-set-variable]
         unsigned int profile_compatibility;
                      ^
/usr/tmp/nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:527:22: error: variable ‘profile_indication’ set but not used [-Werror=unused-but-set-variable]
         unsigned int profile_indication;
                      ^
/usr/tmp/nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:526:22: error: variable ‘configuration_version’ set but not used [-Werror=unused-but-set-variable]
         unsigned int configuration_version;

解决方法:vim nginx-1.6.0/objs/Makefile 里面的--Werror 选项去掉即可

最后make install完成安装。

三、nginx启动

进入目录,执行以下操作

cd /usr/local/nginx/sbin
./nginx

遇到的错误:

这是因为80端口被占用了,修改监听端口

cd ../conf
vim nginx.conf

把此处的80端口修改为未监听的端口即可,我改为了81,保存退出。

重新启动,成功。

测试方法:在浏览器输入ip+端口,成功则会显示如下结果。

至此,nginx安装成功!

FFmpeg配置

一、相关安装包下载

【   lame   】 wget  https://nchc.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz

【  libogg  】wget  https://ftp.osuosl.org/pub/xiph/releases/ogg/libogg-1.3.3.tar.gz

【libvorbis】wget  https://ftp.osuosl.org/pub/xiph/releases/vorbis/libvorbis-1.3.6.tar.gz

【xvidcore】wget http://ftp.br.debian.org/debian-multimedia/pool/main/x/xvidcore/xvidcore_1.3.3.orig.tar.gz 低于1.3.3会出现问题

【   x264   】wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2

【    a52    】wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz

【   faad2  】wget https://nchc.dl.sourceforge.net/project/faac/faad2-src/faad2-2.8.0/faad2-2.8.8.tar.gz

【    faac   】wget https://nchc.dl.sourceforge.net/project/faac/faac-src/faac-1.29/faac-1.29.9.2.tar.gz

【  amrnb 】wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-11.0.0.0.tar.bz2

【  amrwb 】wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-11.0.0.0.tar.bz2

【    amr    】wget https://jaist.dl.sourceforge.net/project/opencore-amr/opencore-amr/0.1.2/opencore-amr-0.1.2.tar.gz

下载完之后,解压,安装。

tar -zxvf xxx.tar.gz  or  unzip xxx.zip  or tar -jxvf tar.bz2
cd xxx
./configure --prefix=/usr/ 
make && make install

需要注意的是,在最后的安装过程中,有些库和头文件不一定会自动给你移动到/usr/lib 或者/usr/include下面去,只会把bin文件移动过去,需要自己移动(我就踩过坑,前前后后装了好几遍,明明已经安装成功,但是就是找不到.a或者.so文件。这时你要注意了,很有可能是make install没有给你做相关文件移动的命令;例如查看有无x264库,执行命令find /usr -name libx264*,看看有无.a或者.so字样结尾的文件,如果没有,去源码安装目录,寻找以.a或者.so结尾的库移动到/usr/lib和/usr/lib64下面即可)。

安装过程大部分还是很顺利的,偶尔碰到的小问题,由于当时没做记录,也没有什么很深的印象,已经忘记了。

二、ffmpeg配置安装

ffmpeg源码地址:https://ffmpeg.org/releases/ffmpeg-4.1.tar.bz2,版本为4.1最新版

依旧是/root/install目录,解压tar -jxvf ffmpeg-4.1.tar.bz2

终结版命令:

cd ffmpeg-4.1/
./configure --prefix=/usr/local/ffmpeg --enable-libmp3lame --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libxvid --enable-postproc --enable-ffplay --extra-cflags=-I/usr/local/include --extra-libs=-ldl --extra-libs=-lxvidcore --extra-libs=-lm --extra-libs=-lpthread

后面的--extra-cflags=-I/usr/local/include --extra-libs=-ldl --extra-libs=-lxvidcore --extra-libs=-lm --extra-libs=-lpthread

这些选项为安装过程出现各种错误之后解决掉之后的终结版命令!这只是在我电脑上的路径,不一定适用于所有电脑~~请择需选取。

如果想体验一下痛并快乐着的感觉,可以使用和我一样起点的命令:

./configure --prefix=/usr/local/ffmpeg2 --enable-libmp3lame --enable-libvorbis --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libxvid --enable-postproc --enable-ffserver --enable-ffplay

命令参考链接:Linux下ffmpeg的完整安装,最后等待执行完成即可。

 

以上步骤已经处理了大部分会出现的错误,理论上不会出现下列错误,可略过。

 

错误汇总:

1、ERROR: libmp3lame >= 3.98.3 not found

https://nchc.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz

tar -zxvf lame-3.100.tar.gz
cd lame-3.100
./configure
make && make install

2、ERROR: libopencore_amrnb not found

https://jaist.dl.sourceforge.net/project/opencore-amr/opencore-amr/0.1.2/opencore-amr-0.1.2.tar.gz

tar -zxvf opencore-amr-0.1.2.tar.gz
cd opencore-amr-0.1.2
./configure
make && make install

3、configure: error: must have Ogg installed!

https://ftp.osuosl.org/pub/xiph/releases/ogg/libogg-1.3.3.tar.gz

tar -xf libogg-1.3.3.tar.xz
./configure --prefix=/usr --disable-static
make && make install

4、ERROR: libx264 not found

ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2

tar -jxvf last_x264.tar.bz2
cd x264-snapshot-20190111-2245/
./configure --disable-asm --enable-static --enable-shared
make && make install

5、ERROR: libxvid not found 

http://ftp.br.debian.org/debian-multimedia/pool/main/x/xvidcore/xvidcore_1.3.3.orig.tar.gz

tar -xf xvidcore_1.3.3.orig.tar.gz
cd xvidcore/build/generic
./configure
make && make install

6、ERROR: libvorbis not found

 https://ftp.osuosl.org/pub/xiph/releases/vorbis/libvorbis-1.3.6.tar.gz

tar -xf libvorbis-1.3.6.tar.gz
cd libvorbis-1.3.6
./configure
make && make install

7、gcc is unable to create an executable file

这种情况下要么是gcc、gcc-c++没有安装,要么是 ./configure后面的选项中路径有错误,或者是链接的库不存在。好好检查下附加库路径或者名字有没有错误。

8、config.log中报错,相关头文件找不到

查找相关头文件是否存在,如不存在,安装;如果存在依然没有找到增加选项:--extra-cflags=-I头文件路径名;例如-I/usr/local/include

9、config.log中报错,无法解决的外部符号错误或找不到相关函数的实现

百度搜索函数所在的库,如不存在,安装,如果存在没有找到,增加编译选项: --extra-libs=-l库名;例如 --extra-libs=-lxvidcore

总结:

遇到错误,先不要急着百度,去源码所在目录,执行命令

vim ./ffbuild/config.log

 在这里面,有更为详细的错误原因,更加能直接定位到错误所在。如什么文件找不到或者是什么库没有连接到,这里面都有比较详细的说明,至此,ffmpeg已经安装完成了。

 

三、FFmpeg测试

编译完成之后,可以使用make install,他会自动拷贝相关头文件到编译选项中--prefix=后面的路径里去,也可以不执行,在当前目录测试。输入命令:

./ffmpeg

报错:

./ffmpeg: error while loading shared libraries: libopencore-amrwb.so.0: cannot open shared object file: No such file or directory

find /usr/ -name libopencore*

cp /usr/local/lib/libopencore-amrwb.so.0 /usr/lib64/
cp /usr/local/lib/libopencore-amrwb.so.0 /usr/lib/

cp /usr/local/lib/libopencore-amrnb.so.0 /usr/lib64/
cp /usr/local/lib/libopencore-amrnb.so.0 /usr/lib/

把相关库复制到/usr/lib和/usr/lib64下面,也可以增加相关库位置到系统路径。总之让程序找到库即可。

执行成功:

[root@instance-5vgw70ig ffmpeg-4.1]# ./ffmpeg
ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-36)
  configuration: --prefix=/usr/local/ffmpeg --enable-libmp3lame --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libxvid --enable-postproc --enable-ffplay --extra-cflags=-I/usr/local/include --extra-libs=-ldl --extra-libs=-lxvidcore --extra-libs=-lm --extra-libs=-lpthread
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

显示如图所示,即为成功安装!

这里有编译好的ffmpeg_4.1版下载链接(附带运行环境):   终结版下载地址

 

推流直播配置

一、nginx配置

打开nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf

在上所示位置,添加代码 保存退出即可。

rtmp {
 
    server {
 
        listen 8090;  #//服务端口 
 
        chunk_size 4096;   #//数据传输块的大小
 
        application live {
            live on; 
            #play /usr/local/data/video; #//视频文件存放位置,访问方式rtmp://localhost:8090:/video
            #如视频路径存有视频welcome.mp4访问路径即为rtmp://localhost:8090/video/welcome.mp4
        }   
    }   
}

重启nginx服务,无输出即为成功。

[root@192 klxs]# 
[root@192 klxs]# /usr/local/nginx/sbin/nginx -s reload
[root@192 klxs]# 
[root@192 klxs]# 

ffmpeg推流命令:
 

./ffmpeg -re -i 2.avi -c copy -vcodec libx264 -acodec aac -f flv rtmp://192.168.1.5:8090/live/room

-i :这个参数表示输入 ,后面2.avi 就是输入文件。

-vcodec libx264: -vcodec表示使用的视频编解码器 ,前缀v表示video。后面紧跟的libx264表示使用h264视频编解码器

-acodec aac: -acodec表示使用的音频编解码器,前缀a表示audio。后面的aac表示使用aac格式的音频编解码器。

-f flv : -f表示format ,就是强制输出格式为flv,这一步其实也叫封装(mux),封装要做的事就是把视频和音频混合在一起,进行同步。紧跟在后面的rtmp://192.168.1.5:8090/live/room 表示输出的"文件名",这个文件名可以是一个本地的文件,也可以指定为rtmp流媒体地址。指定为rtmp流媒体地址后,则ffmpeg就可以进行推流。

播放方式一:下载VLC播放器,输入推流地址即可。

播放方式二:video.js,  下载链接

下载之后放入/usr/local/nginx/html目录下,在网页直接打开index.html即可。此方式在第二次实验时未成功,暂时没有截图,待以后上传。至此,安装过程全部结束!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux下,使用nginx+ffmpeg+video.js实现直播效果(含centos7环境配置步骤) 的相关文章

  • Ubuntu20.04下的编译与运行LIO-SAM【问题解决】

    LIO SAM在Ubuntu20 04下编译和运行的问题 一 安装依赖项1 Boost gt 61 1 652 CMake gt 61 3 03 gcc大于4 7 3就行4 安装 TBB5 安装 MKL 二 安装GTSAM三 OpenCV
  • 在Ubuntu20.04系统上LIO-SAM跑KITTI数据集和自己数据集代码修改

    LIO SAM跑KITTI数据集和自己数据集代码修改 一 编译并运行LIO SAM二 代码修改1 cloud info msg2 imageProjection cpp 三 KITTI数据集准备四 自己数据集准备五 修改配置文件params
  • KITTI数据集Raw Data与Ground Truth序列00-10的对应关系,以及对应的标定参数

    一 KITTI官方提供的真值和标定参数下载地方 网站 xff1a Visual Odometry SLAM Evaluation 2012 具体位置 xff1a 真值 xff1a Download odometry ground truth
  • 相机内参标定,相机和激光雷达联合标定

    相机内参标定 xff0c 相机和激光雷达联合标定 一 相机标定原理1 1 成像过程1 2 标定详解 二 相机和激光雷达联合标定2 1 标定方法汇总2 2 Autoware的安装与运行2 2 1 安装方式2 2 2 安装Autoware的依赖
  • Ubuntu20.04安装和编译运行lidar_align来联合标定lidar与imu的外参

    Ubuntu20 04安装和编译运行lidar align来联合标定lidar与imu的外参 一 编译运行lidar align1 1 下载地址1 2 编译1 2 1 nlopt问题解决1 2 2 c 43 43 问题解决 二 处理数据集三
  • ROS小工具学习与使用

    ROS小工具学习与使用 rqt的使用 rqt bag工具 rqt bag span class token operator lt span your bagfile span class token operator gt span sp
  • printf函数的实现方法

    printf是一个C库函数 xff0c 用于向标准输出 xff08 stdout xff09 写入格式化的字符串 如果格式字符串包含格式说明符 xff08 以 开头的子序列 xff09 xff0c 则需要额外的参数来替换相应的说明符 实现p
  • linux下查看cmake的版本

    方法 在命令行输入指令 xff1a cmake span class token operator span version
  • C++常用标准库

    STL是Standard Template Library的简称 xff0c 中文名标准模板库 从根本上说 xff0c STL是一些 容器 的集合 xff0c 这些 容器 有list vector set map等 xff0c STL也是算
  • 如何轻松写出正确的链表代码

    如何轻松写出正确的链表代码 xff1f 1 理解指针或引用的含义 将某个变量赋值给指针 xff0c 实际上就是将这个变量的地址赋值给指针 xff0c 或者反过来说 xff0c 指针中存储了这个变量的内存地址 xff0c 指向了这个变量 xf
  • JVM之虚拟机栈详细讲解

    Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域 这些区域有各自的用途 xff0c 以及创建和销毁的时间 xff0c 有的区域随着虚拟机进程的启动而一直存在 xff0c 有些区域则是依赖用户线程的启动和结
  • 【图像处理】特征点算法整理总结

    特征点检测 1 Susan SUSA xff08 Smallest Univalue Segment Assimilating Nucleus xff09 算子是一种高效的边缘和角点检测算子 xff0c 并且具有结构保留的降噪功能 原理 用
  • 图像特征点匹配算法

    sift https blog csdn net weixin 38404120 article details 73740612 https blog csdn net abcjennifer article details 763968
  • 算法目标检测面经

    1 自我介绍 2 简历上的项目 网易雷火 AI研究员 1 ResNet FCN Fasterrcnn 2 膨胀腐蚀的原理 3 均值滤波的原理 时间复杂度 怎么优化 4 第k大的数 topK个数 网易互娱预研 深度学习计算机视觉 1 语义分割
  • 图像配准(Image Registration)简介

    图像配准在目标检测 模型重建 运动估计 特征匹配 xff0c 肿瘤检测 病变定位 血管造影 地质勘探 航空侦察等领域都有广泛的应用 每一种配准方法通常都针对某个具体问题而设计的 xff0c 众多方法中 xff0c 唯一的共性就是每个配准问题
  • SSD算法详解

    转载 xff1a https blog csdn net ytusdc article details 86577939 SSD github https github com weiliu89 caffe tree ssd SSD pap
  • 深度学习-目标检测评估指标P-R曲线、AP、mAP

    基本概念 P R曲线中 xff0c P为图中precision xff0c 即精准度 xff0c R为图中recall xff0c 即召回率 Example 下面通过具体例子说明 首先用训练好的模型得到所有测试样本的confidence s
  • 使用gitlab初次上传代码

    提要 项目开发中需要使用gitlab来管理代码 xff0c 将自己开发的模块上传到gitlab 第一次使用这个代码管理仓库 xff0c 记录一下 方法 1 首先注册gitlab的账号 这个在百度上搜一下gitlab的官网 xff0c 进去后
  • Keil5添加.c文件与.h文件的方法-导入支持库-新大陆物联网竞赛-Lora模块&NBIOT模块例程-添加导入文件

    一 概述 在某些情况下 xff0c 我们使用现用的物联网开发例程 xff0c 例如新大陆物联网的Lora与NBIOT的例程 xff0c 我们对其例程内目前所有的库不满意 xff0c 不足以实现开发需要的功能 xff0c 我们需要在原有工程上
  • 初探DSO-SLAM并运行dso_ros

    最近在做SLAM相关的工作 xff0c 用思岚的A2激光雷达在turtlebot3上测试SLAM建图效果 xff0c 感觉还是不错的 由于项目在方案上还没有确定选择哪种作为SLAM的最终方案 xff0c 在我测试奥比中光ASTRA mini

随机推荐

  • 虚拟机中安装CMake工具

    https www cnblogs com yanqingyang p 12731855 html
  • 寻路系统:动态障碍物

    寻路的相关参数 需要先勾选 游戏场景中所有需要烘焙路径信息的游戏对象状态为 static 然后点开windos菜单下的navigation窗口进行烘培 Navigation Static xff1b 表示该游戏对象是否参与导航网格的烘培 G
  • Ubuntu18.04下使用cmake编译一个OpenCV程序(编写CMakeLists.txt文件)

    导航 1 安装OpenCV1 1首先安装OpenCV 1 2定位OpenCV 2 创建一个项目3 编写一个基础OpenCV程序4 编写CMakeLists txt文件 为了记录以及防止遗忘 xff0c 备份一个大致能满足运行的CMakeLi
  • linux下最全curl命令使用方式学习和拓展

    为什么要使用curl命令 xff1f curl命令可以帮助我们在linux服务内部通讯 xff0c 排查接口是否能够正确调用 xff0c 外网的接口是否有防火墙限制 xff0c 内网的请求可以快速帮我们获取接口参数返回 xff0c 并且调试
  • 【传感器标定】kalibr 标定工具箱问题汇总

    文章目录 写在前面一 运行一段时间报错 96 Spline Coefficient Buffer Exceeded Set larger buffer margins 96 的解决方法1 问题描述2 解决方法参考链接 写在前面 kalibr
  • C++中的Vector存放指针的清空问题

    C 43 43 中的Vector存放指针的清空问题 一 写在前面二 参考做法参考链接 这两个链接写得挺好 xff0c 可以参考下 一 写在前面 C 43 43 很难的一个重要原因就是内存管理的问题 xff0c 因为你既要管理申请内存 xff
  • find_package(xxxx REQUIRED)找不到路径的全平台通用解决办法

    相信刚学cmake c 43 43 的朋友们在编译的时候一定被这个问题折磨许久哈 然后怎么搜怎么添加都有问题 xff0c 仔细研究了我才发现这个地方不同的索引机制 xff0c 但是表面上都是 find package xxxx REQUIR
  • STC51-串口通信

    1 并行与串行基本通信方式 随着单片机系统的广泛应用和计算机网络技术的普及 xff0c 单片机的通信功能愈来愈显得重要 单片机通信是指单片机与计算机或单片机与单片机之间的信息交换 xff0c 通常单片机与计算机之间的通信我们用的较多 通信有
  • qt种实现搜索栏功能

    引言 在搜索栏种输入要搜索的文本 xff0c 就会出现相关联的文本提示 xff0c 这是可以通过鼠标选中要搜索的文本 xff0c 或者通过上下键选中要搜索的文本 效果 效果图如下所示 xff1a 实现 下面是相关的代码实现 xff0c 读者
  • orangePi3 TLS烧录启动、wifi配置和ssh登录、烧录进内置emmc flash

    orangePi3 TLS烧录启动 wifi配置和ssh登录 烧录进内置emmc flash 烧录镜像到TF卡启动 镜像下载 官方镜像地址 xff1a http www orangepi cn html hardWare computerA
  • C/C++——代码的编译和运行

    1 编译过程 每种高级语言都有对应的编译器 xff0c 而且针对不同指令集架构的CPU会提供不同的编译器 本文以C语言为例 xff0c CPU指令集架构不做前提约束 xff0c 实际上同一种语言也只有在狭义的编译阶段有所区别 xff0c 其
  • Arduino UNO GPS 制作 里程表 经纬度

    机缘 上过月买了一个GPS模块 xff0c 然后我用esp32读取GPS数据 xff0c 并使用LVGL显示GPS信息 期间踩了很多坑 xff0c 我用乐鑫的IDF开发 xff0c 自己写了一个GPS信息提取方法 xff0c BUG很多 x
  • socket编程——UDP协议(C语言编程)

    1 收发信息 ssize t sendto int socket void message size t length int flags struct sockaddr dest addr socklen t dest len 返回值 l
  • 【C语言之线性表链式存储结构】

    C语言之线性表链式存储结构 文章目录 C语言之线性表链式存储结构前言一 线性表链式存储结构定义二 相关概念1 结点1 头指针 三 代码描述1 单链表结点定义1 单链表的创建2 单链表的查找3 在单链表中 xff0c 替换某一个位置的数据4
  • unsigned char* (uchar*) 转为QImage

    场景 xff1a 有一副图像 xff0c 事先已经因为各种需要被读取到了内存中 xff0c 且不可再根据路径读取 xff0c 只能读取内存中的数据转为QImage 百度过好久 xff0c 没有一个帖子说的特别详细 xff0c 解释的特别清楚
  • 卷积的含义-详解

    原文链接 xff1a 点击此处看知乎原文 最近需要用到卷积对图像进行处理 xff0c 不明白卷积的含义 xff0c 找资料的时候在知乎找到一个很优秀的评论 xff0c 特此记录一下 以下内容来自于原文复制 xff1a 对卷积的困惑 卷积这个
  • 图像处理-直方图均衡化(C++实现,不依赖opencv)

    近来接触图像处理领域 xff0c opencv入门之后 xff0c 想自己动手实现一些算法 xff0c 先从直方图均衡化开始吧 xff01 我使用的图像文件是只包含数据yuv格式图像 xff0c 以后等需要的时候再处理从普通格式 xff08
  • 图像处理-Sobel边缘检测(C++实现,不依赖opencv)

    边缘检测一直是图像处理中比较热门的一块 xff0c 今天简单实现了下sobel算法 先上图 xff1a 原图 xff1a Sobel处理 彩图 xff1a Sobel处理 灰度图 xff1a 可以看到在不复杂的情况下 xff0c Sobel
  • 图像处理-高斯滤波和升级版Side Window版高斯滤波(C++实现,无需opencv)

    图像处理绕不开的一个环节就是去燥 xff0c 去掉各式各样的噪声来保证图像的质量 今天将高斯滤波实现了下 xff0c 在此稍作记录 以往惯例 xff0c 先上图 xff1a 原图 xff1a 高斯滤波 xff1a Side Window版高
  • Linux下,使用nginx+ffmpeg+video.js实现直播效果(含centos7环境配置步骤)

    前言 近来因为项目需要 xff0c 需要做一个把视频解码然后推流 xff0c 在浏览器播放的功能 然后查资料 找demo xff0c 最终决定使用FFmpeg 43 nginx来完成相应功能 xff0c 过程颇为心酸 xff0c 在此做下笔