IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> imx6ull开发板 ffmpeg nginx buildroot 摄像头推流实验 -> 正文阅读

[系统运维]imx6ull开发板 ffmpeg nginx buildroot 摄像头推流实验

主要难点是

1、如何编译出ffmpeg和nginx

2、编译好ffmpeg和nginx如何移到开发板

3、usb摄像头缺少设备节点怎么处理

参考资料:

1、buildroot构建IMX6ULL文件系统(含QT5)_风轻云淡的博客-CSDN博客_buildroot qt??????2

2、百问网韦东山老师【物联网实战项目】手把手教你如何从0搭建智慧家居中的视频监控系统

3、【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.6

4、100ask_imx6ull视频监控项目-流媒体方案的实现之Nginx(四)_Jocelin47的博客-CSDN博客_imx6ull项目

准备工作

硬件:韦东山 imx6ull pro开发板、USB免驱摄像头(非韦东山店铺所售那个,随便买的)

交叉编译链:确保已经配置好交叉编译环境,基础内容此处不赘述

源码:正点原子提供的buildroot 2019.2源码,可在下列链接里找到

i.MX6ULL Linux阿尔法开发板 — 正点原子资料下载中心 1.0.0 文档

【正点原子】阿尔法Linux开发板(A盘)-基础资料\01、例程源码\08、buildroot源码

一、配置buildroot

1、解压源码

????????复制源码到ubuntu中,然后解压tar -vxjf?buildroot-2019.02.6.tar.bz2

2、打开配置界面

进入buildroot目录,然后make clean 然后 make menuconfig打开图形配置界面

3、配置 Target options

配置后如下图所示

?4、配置Toolchain

跟着下图进行配置

Toolchain
    -> Toolchain type = External toolchain
    -> Toolchain = Custom toolchain //用户自己的交叉编译器
    -> Toolchain origin = Pre-installed toolchain //预装的编译器
    -> Toolchain path =/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf
    -> Toolchain prefix = $(ARCH)-linux-gnueabihf //前缀
    -> External toolchain gcc version = 6.x
    -> External toolchain kernel headers series = 4.6.x
    -> External toolchain C library = glibc/eglibc 
    -> [*] Toolchain has SSP support? (NEW) //选中
    -> [*] Toolchain has RPC support? (NEW) //选中
    -> [*] Toolchain has C++ support? //选中
    -> [*] Enable MMU support (NEW) //选中

4.1先把第一项Tooolchain type配置成External toolchain,才会出现其他选项

4.2其中有差异的主要是Toolchain path,这个需要根据自己用的交叉编译链设置对应路径

4.3 然后gcc version 和 kernel headers series我的ubuntu环境分别是6.x和4.6.x,需要根据自己的环境来配,如果配错了,编译时会报错提示说希望是什么版本,但是实际检测到什么版本,根据提示检测到的实际版本,回去配置修改即可

5、配置 System configuration

System configuration
    -> System hostname = alpha_imx6ull //平台名字,自行设置
    -> System banner = Welcome to alpha i.mx6ull //欢迎语
    -> Init system = BusyBox //使用 busybox
    -> /dev management = Dynamic using devtmpfs + mdev //使用 mdev
    -> [*] Enable root login with password (NEW) //使能登录密码
        -> Root password = 123456 //登录密码为 123456

6、配置 Filesystem images

-> Filesystem images
    -> [*] ext2/3/4 root filesystem //如果是 EMMC 或 SD 卡的话就用 ext3/ext4
        -> ext2/3/4 variant = ext4 //选择 ext4 格式
    -> [*] ubi image containing an ubifs root filesystem //如果使用 NAND 的话就用 ubifs

7、禁止编译 Linux 内核和 uboot

主要为了提高编译速度,默认我看了是没有选的,可以去看看确认下

-> Kernel 
    -> [ ] Linux Kernel //不要选择编译 Linux Kernel 选项
-> Bootloaders 
    -> [ ] U-Boot //不要选择编译 U-Boot 选项!

8、ffmpeg和需要用到的依赖

ffmpeg用于处理输入视频数据和推流,功能强大

8.1 选中alsa-lib

音频相关库

Target packages → Libraries → Audio/Sound?

?8.2 选中alsa-utils

音频相关应用

Target packages → Audio and video applications

?选中后回车进去把能选的都选上

?8.3 选中ffmpeg

视频处理核心应用

Target packages → Audio and video applications

?选中后,回车进去,把能选的都选上

?9、nginx配置

Target packages → Networking applications?

9.1需要下拉找到nginx后选中

9.2 选中后回车进去nginx配置,把里面所有配置项,都选中

9.3 然后在additional modules项回车

添加http-flv模块:$(TODIR)/dl/nginx/nginx/nginx-http-flv-module

9.4 去掉lighttpd服务

默认已经去掉了,主要是防止和nginx并存,可以看看确认下

Target packages → Networking applications?

10 保存配置,再退出

不要直接退出,万一操作失误没保存,1234上面的配置再来一次

11 创建nginx路径并下载模块

在buildroot下创建目录? dl/nginx,在该目录下,输入下列命令获取模块源码

git clone https://github.com/winshining/nginx-http-flv-module.git

?二、编译buildroot和处理编译出来的文件

编译

在buildroot源码根目录下 sudo make

编译时常见错误

1、Toolchain中编译工具路径弄错

2、Toolchain中g编译链或者kernel版本弄错

解压文件系统

编译后,在output/images目录下会有rootfs.tar

复制rootfs.tar 到ubuntu某个路径下并解压tar -vxf rootfs.tar,准备复制需要的文件

解压后,得到下列文件

三、复制执行文件到开发板

这一步是简单且繁琐的

复制ffmpeg

1、先检查开发板有没有自带ffmpeg

? ? ? ? 输入ffmpeg,如果提示命令搜不到就是没有,如果出来一堆使用说明的话,说明自带了那2步可跳过

2、假设开发板没有自带ffmpeg,那就需要复制了

2.1复制 usr/bin 目录下的ffmpeg到开发板/usr/bin目录下

2.2运行ffmpeg

? ? ? ? 此时会报错缺少库文件或其他依赖

2.3 报错提示缺少文件后,从解压出来的rootfs中find -name "*xxxx*"查找,xxx是文件的名称,找到后,复制到开发板相同的目录下

2.4 复制后然后运行ffmpeg,还提示缺少其他库文件的话,继续重复2.3步骤,直到命令正常运行出现下列信息

配置nginx

可能有的开发板会自带nginx,但是因为缺少对RTMP推流的支持,所以我们还是用自己编译好的?

1、复制nginx相关文件

在解压出来的rootfs的usr/sbin/路径下找到nginx,复制到开发板/usr/sbin/路径下

执行nginx,会报错提示找不到需要的文件

可以用下面提供的命令复制,也可以自己从解压出来的rootfs中find -name "*xxxx*"查找,xxx是文件的名称,找到后,复制到开发板相同的目录下?

cp usr/libxslt.so.1 libgd.so.3 /usr/lib? ?//复制缺少的库文件

cp etc/nginx /etc/ -rf? ?????????????????????????//复制配置文件

mkdir ?/var/log/nginx? ? ? ? ? ? ? ? ? ? ? ? ? //创建日志目录

cp etc/init.d/S50nginx /etc/init.d/? ? ? ? //好像是叫服务文件?

2、修改nginx配置文件

vi /etc/nginx/nginx.conf

2.1 修改worker_processes改为auto

?2.2 增加下列代码

rtmp{
  server{
    listen 1935;
    chunk_size 4096;
    application live{
      allow publish 127.0.0.1;
      allow play all;
      live on;
      record off;
      meta copy;
    }
   }
}  

2.2 http 里面添加红色框选项

注意这里复制进去运行时经常提示unkonw错误,对有问题的提示行可手动敲到配置文件里

location /test{
  flv_live on;
  chunked_transfer_encoding on;
  add_header 'Access-Control-Allow-Origin''*';
  add_header 'Access-Control-Allow-Credentials''true';
}

3? 重启nginx服务

/etc/init.d/S50nginx restart

如果修改的配置文件格式异常,就会报错,请根据提示修改或者百度下

我遇到的错误

1)提示unknown directive "?",好像和编码格式有关,好像是因为复制WINDOW 的txt文件就会出现

2)提示格式不对,这种需要根据提示处理了,可能复制的过程多些额外的符号

?4 疑惑

网上看其他教程,这个时候在浏览器上输入IP地址,就会出现nginx的信息,我测试只有404

四、推流测试

验证nginxRTMP服务是否正常

1、开发板输入:ffmpeg -re -i 123.mp4 -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/wei

其中123.MP4是我的测试视频

2、启动VLC media player(百度后下载)

打开网口串流,输入:rtmp://192.168.1.3/live/wei

或者:http://192.168.1.3/test?app=live&stream=wei

?然后点击左下角的播放,即可看到画面

摄像头推流

1、插入USB免驱摄像头检查是否有video1节点

? ? ? ? ls /dev/video*

? ? ? 如果?插入摄像头后没有设备节点video1,按以下方法处理:

原因是因为内核没有自动加载相关驱动,我的方法是重新配置linux内核,把USB Video Class(UVC)从M改为*

进入linux源码,make menuconfig打开图形界面

路径Device Drivers → Multimedia support → Media USB Adapters?

?make zImage -j4 编译好linux内核后把arch/arm/boot/zImage替换到开发板/boot/zImage

2、开发板对摄像头数据推流

ffmpeg -f v4l2 -framerate 10 -i /dev/video1 -q 10 -f flv rtmp://127.0.0.1/live/wei

3、启动VLC media player(百度后下载)

打开网口串流,输入:rtmp://192.168.1.3/live/wei

或者:http://192.168.1.3/test?app=live&stream=wei

?然后点击左下角的播放,即可看到画面

浏览器观看

参考以下文章

使用flv.js快速搭建html5网页直播_impingo的博客-CSDN博客_flv html

根据上面文章提供的百度网盘链接下载测试网页

链接:?百度网盘 请输入提取码
提取码: gd55

解压后打开里面的index.html

在Stream URL栏输入http://192.168.1.3/test?app=live&stream=wei

点击右边按钮Swotch URL后,再点击左下角的Load按钮,正常的话即有视频。建议这里先用视频文件测试不要用摄像头,因为摄像头比较卡

我自己弄的时候一开始总是显示不了,发现是添加到nginx.conf的命令敲错了,请重点检查下图位置

测试用摄像头推流,浏览器显示一直不成功,研究中。。。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-13 22:13:16  更:2022-03-13 22:16:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:29:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码