方案一: 

·mjpg-streamer,它运行在ARM板上
·在手机上使用浏览器直接观看视频

方案二:

推流端(Fmpeg)--rtmp-->Nginx(流媒体服务器)--rtmp/httpflv/hls-->浏览器、播放器

此篇文章记录方案二的具体细节

Linux--视频推流及问题-LMLPHP

一、FFmpeg

FFmpeg是一款开源软件,是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPLGPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。

1、音视频数据处理流程

Linux--视频推流及问题-LMLPHP

2、FFmpeg的组成

组成部分

Linux--视频推流及问题-LMLPHP

  相关概念:Linux--视频推流及问题-LMLPHP

常用参数:

Linux--视频推流及问题-LMLPHP

有关利用Buildroot安装ffmpeg并编译生成开发板上的镜像文件的配置可参考imx6ull开发板 ffmpeg nginx buildroot 摄像头推流实验_韦东山 200万免驱摄像头-CSDN博客

linux之buildroot(2)配置toolchain_使用buildroot创建自己的交叉编译工具链-CSDN博客

基于恩智浦imx6ull处理器的buildroot详细使用步骤 - 嵌入式技术 - 电子发烧友网

二、Ubuntu中Nginx搭建流媒体服务器

选择Ubuntu为流媒体服务器,所以在Ubuntu中利用Nginx搭建服务器。参考文章:

Ubuntu系统使用Nginx搭建RTMP服务器实现推流_ubuntu nginx rtmp-CSDN博客

在ubuntu 上搭建Nginx-RTMP 直播服务器_ubuntu nginx rtmp-CSDN博客

Linux下使用Nginx搭建Rtmp流媒体服务器,实现视频直播功能_linux rtmp服务器播放卡-CSDN博客

问题一:在执行$ git clone https://github.com/nginx/nginx.git命令时出现问题:

fatal: unable to access 'https://github.com/nginx/nginx.git/': Failed to connect to github.com port 443: Connection refused

fatal: unable to access 'https://github.com/nginx/nginx.git/': Failed to connect to github.com port 443: Connection refused

参考https://zhuanlan.zhihu.com/p/620860502这篇文章解决,将https更改为http,两者的区别为前者加密后者不加密,s代表着SSL协议,依靠证书来验证身份。

问题二:在执行make j4 && make install语句时出错,因为显示了Permission denied的错我,所以在命令前加了sudo,但显示结果还是不对

解决:是因为在命令 sudo make -j4 && make install 中,make -j4 部分是在以超级用户权限运行,而 make install 部分是在当前用户权限下运行。这是因为 && 运算符将两个命令连接起来,但不会自动继承前一个命令的权限。正确语句:

sudo make -j4 && sudo make install

问题三:启动nginx时出现

nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (13: Permission denied)
2024/06/20 07:42:49 [emerg] 46729#0: mkdir() "/usr/local/nginx/client_body_temp" failed (13: Permission denied)

解决:根据信息Permission denied权限不够就sudo chmod,文件不存在就根据错我信息提示在该路径下创建文件,目录不存在也是一样。最后sudo nginx启动成功。

启动成功后就可以将数据流推送到服务器中。推流端要注意封装格式、编码器的选择、IP地址和端口设置

06-21 08:38