方案一:
·mjpg-streamer,它运行在ARM板上
·在手机上使用浏览器直接观看视频
方案二:
推流端(Fmpeg)--rtmp-->Nginx(流媒体服务器)--rtmp/httpflv/hls-->浏览器、播放器
此篇文章记录方案二的具体细节
一、FFmpeg
FFmpeg是一款开源软件,是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。
1、音视频数据处理流程
2、FFmpeg的组成
组成部分
相关概念:
常用参数:
有关利用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地址和端口设置