直播服务(本地局域网)
建立直播服务(局域网)
1.安装Nginx (直播所需的nginx-rtmp-module)
2.安装MySQL (可选)
3.安装PHP
4.安装视频推流相关工具(x264、ffmpeg、fdk-aac)
首先建立一个目录存文件如 src mkdir src
切换进目录 cd src
下载nginx-rtmp-module模块 这里使用git工具
git clone https://github.com/arut/nginx-rtmp-module
接着下载Nginx源文件 就弄个稳定的吧
wget http://nginx.org/download/nginx-1.12.2.tar.gz
开始解压该文件 tar -zxvf nginx-1.12.2.tar.gz 并切入该目录 cd nginx-1.12.2
开始安装配置
这里我给出一个配置 可以自己选择
./configure –with-http_ssl_module –add-module=../nginx-rtmp-module –with-http_mp4_module –with-http_flv_module 执行
但是出现了问题
我们开始安装一些工具gcc、g++。。。
sudo apt-get install gcc g++ libpcre3 libpcre3-dev zlib1g zlib1g-dev (openssl libssl-dev)不加可以知道安装过程会出现哪些错误
接着配置Nginx的安装配置
./configure –with-http_ssl_module –add-module=../nginx-rtmp-module –with-http_mp4_module –with-http_flv_module
sudo apt-get install openssl libssl-dev
继续
开始编译Nginx make –j4(开启多线程编译,速度快些)
先安装make工具 sudo apt-get install make 有的话就跳过
然后编译
然后安装 sudo make install
安装位置: /usr/local/nginx
启动文件: /usr/local/nginx/sbin/nginx
安装完后,可以将目录删了。。 rm –R 可以删除目录
我们启动下Nginx看看是否正常工作
(可选)安装MySQL
sudo apt-get install mysql-server mysql-common
确认密码就可以安装了
支持远程连接
连接数据库
mysql –u root –p 密码
使用mysql数据库
use mysql;
查询表
select host, user from user;
update user set host = ‘%’ where user = ‘root’;
修改mysql配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到bind-address = 127.0.0.1这一行
改为bind-address = 0.0.0.0即可
这样就可以支持root远程登录了(注意:这样非常危险,谨慎操作)
重启MySQL服务
sudo service mysql restart
安装PHP
sudo apt-get install php7.0 php7.0-mysql php7.0-fpm php7.0-common php7.0-curl php7.0-cli php7.0-mcrypt php7.0-mbstring php7.0-dom
让Nginx支持PHP 修改配置文件
sudo vim /usr/local/nginx/conf/nginx.conf
worker_processes 1; 改为4
user root; 添加这一句
支持php接口
修改以下
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
开直播服务
代码如下:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
}
}
重启Nginx服务 sudo /usr/local/nginx/sbin/nginx –s reload
发现一个问题,Nginx的网站目录在/usr/local/nginx/html那里,可能会出现权限不足,因此把默认目录改为用户自定义的目录下。
首先在~(用户主目录)目录下建立文件夹 mkdir html
使用pwd查看当前目录的绝对路径 我的是 /home/heros
修改Nginx配置文件 sudo vim /usr/local/nginx/conf/nginx.conf
可以将原先的文件拷贝至新目录下
cp /usr/local/nginx/html/* /home/heros/html
测试PHP是否启用了
在html目录下创建index.php文件
touch index.php
vim index.php
内容是
phpinfo();
?>
重启Nginx服务 sudo /usr/local/nginx/sbin/nginx -s reload
看看效果
输入网站http://你的IP地址/index.php
(可选)网页管理MySQL phpMyAdmin工具
wget https://files.phpmyadmin.net/phpMyAdmin/4.7.9/phpMyAdmin-4.7.9-all-languages.tar.gz
解压 tar -zxvf phpMyAdmin-4.7.9-all-languages.tar.gz
将phpMyAdmin-4.7.9-all-languages 更名为phpMyAdmin 并且移动到html目录下
测试是否正常工作
服务器ip地址/phpMyAdmin
尝试登录进去
开始安装视频推流工具
1.x264 视频编码
下载x264 使用git
1.git clone http://git.videolan.org/git/x264.git
进入该目录 cd x264
./configure –enable-shared –disable-static –disable-asm
编译并安装 make –j4 && sudo make install
如果要提示输入密码 输入便是
2.fdk-aac 音频编码
下载fdk-aac 使用git
git clone https://github.com/mstorsjo/fdk-aac.git
编译这音频编码 需准备 m4、libtool、autoconf
sudo apt-get install m4 libtool autoconf
autoreconf –fiv
./configure && make –j4
sudo make install
更新Linxu的库 sudo ldconfig
3.ffmpeg 转码工具
下载 wget http://ffmpeg.org/releases/ffmpeg-3.4.2.tar.bz2
解压 tar –jxvf ffmpeg-3.4.2.tar.bz2
进入该目录 cd ffmpeg-3.4.2
配置安装
./configure –enable-shared –disable-static –enable-gpl –enable-libx264 –enable-nonfree –enable-libfdk_aac –disable-x86asm
这里提示
安装pk-config sudo apt-get install pk-config
重新执行ffmpeg的安装配置
然后编译以及安装 make –j4 && sudo make install
ffmpeg: error while loading shared libraries: libavdevice.so.57: cannot open shared object file: No such file or directory
遇到这样的错误 sudo ldconfig 就能解决了
使用示例 推流
ffmpeg -re -i “原视频文件” –vcodec libx264 –codec:a libfdk_aac -f flv “你的rtmp地址/你的直播码” rtmp://localhost/live/liveroom
做一个简单的直播网站平台
去网上下载ckplayer
这里使用HBuilder编写网页
下载测试网页
链接:https://pan.baidu.com/s/1dBf0n3FOteVAcLV1ZRHPyQ 密码:8r14
将这个文件夹上传给服务器 ftp 或 网络邻居(前提安装Samba)
ftp工具推荐FileZilla Client
将live文件夹放置在html那里
测试本地直播。。。
1.打开网页 自己服务器IP/live/see.html (注意:最新版firefox不支持flash)
2.视频推流
这里我用的是自己从网上下的琪亚娜跳极乐净土的视频做测试
ffmpeg –re –i “视频地址” –vcodec libx264 视频编码 –codec copy 不变 –f flv 直播视频格式 rtmp://localhost(远程推送则更改ip地址)/live/(yly)房间名
推流过程
3.测试效果