标签:流媒体 FFmpeg nginx VLC sudo Nginx 推流
一:概述
在本项目开篇中已经提及了远程视频监控的两种的方案,而在上一篇也已经介绍了MJPG-Streamer方案,
https://blog.csdn.net/qq_34968572/article/details/113031348
本文将继续介绍另一种方案也是现在被应用最广泛的方案:流媒体。
回忆一下开篇中对流媒体框架的介绍:两端加一服(推流端,拉流端和流媒体服务器),以及推流协议和拉流协议。
https://blog.csdn.net/qq_34968572/article/details/112993821
本次方案整体框架为:FFmpeg(推流端)+RTMP(协议)+Nginx(流媒体服务器)+VLC(拉流客户端)
FFmpeg工具安装在Hi3516上,Nginx流媒体服务器安装在Ubuntu上,VLC客户端安装在PC上。三者通过路由连接即可实现局域网内的推流拉流,要想实现外放访问需要自己去实现内网穿透功能,后续会讲到,静等。
值得说明的是FFmpeg只是一个工具可以用于测试,在实际项目中一般都是用户自己根据需求实现推流程序(可以通过分析FFmpeg的源码来实现自己的推流程序),和FFmpeg具有相同功能的工具还有live555。
二:FFmpeg移植
FFmpeg的移植需要依赖几个三方库:
1.yasm移植(可选,yasm是汇编编译器,ffmpeg加入它是为了提高编译速度,可在x264配置时使用--disable-asm选择不使用)
2.x264移植
3.xvid移植(可选)
FFmpeg及其三方库的移植在之前的二维码项目中已经讲解过,这里不再赘述。
传送门:https://blog.csdn.net/qq_34968572/article/details/112978917
编译完后将生成文件全部拷贝到Hi3516上。yasm,x264和xvid编译后的lib文件同样需要拷贝到Hi3516上。
三:Nginx+Rtmp流媒体服务器搭建
本次实验Nginx安装于Ubuntu上,所以不需要交叉编译。
1、安装三方库文件:
sudo apt-get install build-essentia
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install libssl-dev
sudo apt-get install zlib1g
sudo apt-get install zlib1g-dev
sudo apt-get install unzip
2、准备Nginx和Nginx-Rtmp文件并解压:
(sudo) wget http://nginx.org/download/nginx-1.12.2.tar.gz (版本自选)
(sudo) wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
本次开发用的nginx1.16.1版本如上图所示
3、编译安装:
生成配置文件
sudo ./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=..//nginx-rtmp-module-master
编译安装
sudo make
sudo make install
4、修改config文件
根据下面图片修改文件:
在http中添加/live、/hls内容:
在最后添加rtmp内容:
5、启动Nginx
进入/usr/local/nginx/sbin: sudo ./nginx -c conf/nginx.conf
至此Nginx+Rtmp环境就搭建完毕,在相同网段中打开Ubuntu的IP地址就可看到Nginx流媒体服务器内容:
四:安装VLC
PC下载“VLC media player”客户端
五:测试
1、保证Ubuntu服务器,PC,和Hi3516网络在同一网段。
2、打开VLC客户端等待收流:
按照上述内容填充,点击播放等待Hi3516上推流数据即可实现拉流播放。
3、执行指令进行推流
./ffmpeg -re -i demo1.mp4 -vcodec copy -acodec copy -f flv rtmp://192.168.1.103/live/stream
其中ffmpeg是前面移植好的可执行文件在bin目录中,MP4文件自行下载,其中192.168.1.103是我Ubuntu服务器的IP地址。
VLC画面:
六:总结
本文记录我在利用FFmpeg工具进行流媒体开发的所有经过,以上仅仅只是实现了推本地文件,想要实现远程实时监控,还需搭配摄像头。
我在查询海思3516SDK时发现推流程序都是自己编写搭配自家的MPP框架实现摄像头采集数据实时推流。
据我所知推流程序一般都是分析FFmpeg工具中的源码,进行裁剪调用适配自己的产品。关于FFmpeg的源码分析可以参考雷大大(雷霄骅)的博客,视音频界的大佬(天妒英才,其对技术的追求和探索精神值得我们学习)
https://blog.csdn.net/leixiaohua1020
对于在实际项目中自行实现推流程序搭配摄像头和喇叭进行实时音视频推流和远程访问的内容容我挖个坑,后面有空再继续探索。现在有RK的项目要搞,我到时也会新建一个RK的专栏对工作进行记录与你们分享。这边得搁置一段时间了,过段时间再来。
咋们RK专栏见!
标签:流媒体,FFmpeg,nginx,VLC,sudo,Nginx,推流 来源: https://blog.csdn.net/qq_34968572/article/details/113172809
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。