前言
近段时间在学习Android直播,那么毋庸置疑ffmpeg和WebRTC是音视频界的两个大佬。
ffmpeg的基本使用:Android音视频开发 ffmpeg基本命令的使用。
看过很多教程讲解直播环境的搭建,大都是在mac环境上搭建的,对于windows用户来说搭建起来比较繁琐,昨天的这个时候我尝试了在windows本地搭建Nginx-rtmp直播服务器,最终可以成功运行。效果图如下所示。
不过我们今天不讲解如何在windows上搭建直播服务器,如果有问题的朋友可以一起探讨。今天来讲解如何在ubuntu服务器上搭建直播服务器。(此处不造轮子,完全为了以后搭建更加方便)
1.RTMP简介
RTMP全称是Real Time Messaging Protocol(实时消息传输协议),rmtp是一种通讯协议。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。
2.环境搭建
如果对linux操作命令不熟悉,可以移步至我的linux系列文章:
首先创建源码编译的目录然后进入。
$ mkdir nginx-src
$ cd nginx-src
下载源码
$ git clone https://github.com/nginx/nginx.git
$ git clone https://github.com/arut/nginx-rtmp-module.git
$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
$ tar -xzvf pcre-8.39.tar.gz
$ cd nginx$ git checkout release-1.9.9
编译安装
#将configure的命令封装成脚本
$ vim cfg.sh
# cfg.sh文件的内容
auto/configure --prefix=/usr/local/nginx \
--with-pcre=../pcre-8.39 \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_flv_module \
--with-http_mp4_module \
--add-module=../nginx-rtmp-module/
$ chmod a+x cfg.sh
$ ./cfg.sh
$ make
$ make install
3.配置服务环境
安装完成后修改配置文件执行下列操作:
进入 cd /usr/local/nginx/conf
编辑 nginx.conf,如果提示没有权限,可执行sudo chmod 777 nginx.conf即可取得所有权限
编辑nginx.conf文件,主要是添加rtmp服务
配置完成后,保存文件。
执行下列命令重启nginx:
sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/nginx
如果没有出现错误,这时已经成功搭建好了rtmp流媒体,
那么我们使用工具来测试,你也可以使用webrtc-android端来测试,这里我们使用工具SmarterStreaming,下载地址:GitHub - daniulive/SmarterStreaming: 业内为数不多致力于极致体验的超强全自研跨平台(windows/linux/android/iOS)流媒体内核,通过模块化自由组合,支持实时RTMP推流、RTSP推流、RTMP播放器、RTSP播放器、录像、多路流媒体转发、音视频导播、动态视频合成、音频混音、直播互动、内置轻量级RTSP服务等,比快更快,业界真正靠谱的超低延迟直播SDK(1秒内,低延迟模式下200~400ms)。
测试之前首先我们要推送一个视频流
我们使用命令 ffmpeg -re -i soft/2.mp4 -c copy -f flv rtmp://localhost:1935/live/film
soft/2.mp4 是服务器上的视频地址,运行如果出现下图所示,说明上述环境搭建的没有问题
我们使用测试工具测试,输入地址 rtmp://123.207.55.74:1935/live/film
效果如下图所示:
当推流结束后则播放结束(仔细想想像电视台一样推送之后结束再接着推送广告等)