直播源的制作对整个开发和调试很重要。
方式1: Nginx+ffmpeg(可扩展)
- 安装Nginx
- 安装ffmpeg
- 配置Nginx
- 准备视频
- 利用ffmpeg推流
1.1 安装nginx:
mac通过:brew install nginx-full --with-rtmp-module
windows通过:
剩下的命令:
集成nginx-rmtp-module:windows有点麻烦,所以换成了ubuntu.(这里看文末)
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 nginx-rmtp-module是Nginx服务器的流媒体插件。nginx通过rtmp模块提供rtmp服务,ffmpeg推送一个rtmp流到nginx, 然后客户端通过访问nginx来收看实时视频
1.2 安装ffmpeg:
mac: brew install ffmpeg
windows:
添加到环境变量下:
1.3 配置Nginx:
mac:位于/usr/local/etc/nginx/下有个nginx.conf.
windows下:
需要配置的是:
- 配置服务rtmp hls http-flv
hls_path是分割文件存储的位置.
还需要在http模块中配置一下:
重启nginx或者启动nginx:
这样看不出什么,
这时我们可以推流:
这是本地下载的mp4,这里不再下载mp4,就把这个mp4当作源推就可以了,i相当于模拟了摄像头的功能。
ffmpeg -re -i meimei.mp4 -vcodec libx264 -acodec aac -f flv rtmp://192.168.78.131:1935/rtmplive/rtmp
192.168.78.131是自己的电脑的ip
运行ffmpeg命令前为了看到效果需要安装VLC播放器:(普通的播放器是不能使用rtmp协议的)
然后再执行上面ffmpeg推流命令。
然后打开VLC:
就可以查看了。
将rtmplive改为hls,就会发现稳定一点。
方式2:集成服务(不好扩展但是使用方便)
- 下载服务
- 安装服务
- 准备源视频
- 开启服务
- 利用ffmpeg推流
ffmpeg -re -i meimei.mp4 -c copy -f flv rtmp://localhost:1935/live/自定义名
地址:
RTMP: rtmp://localhost:1935/live/自定义名
FLV: http://127.0.0.1:7001/live/自定义名.flv
HLS: http://127.0.0.1:7002/live/自定义名.m3u8
Ubuntu安装Nginx:
1.下载并解压:
wget http://nginx.org/download/nginx-1.15.3.tar.gz
tar xvf nginx-1.15.3.tar.gz
2.下载并解压nginx rtmp模块:
wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.1.tar.gz
tar xvf nginx-rtmp-module-1.2.1.tar.gz
3.编译安装nginx所需的库:
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
4.–add-module 指向rtmp模块目录(进入nginx的安装目录下执行这条命令)
./configure --prefix=./bin --add-module=../nginx-rtmp-module-1.2.1
5.编译安装在当前目录的bin目录下
make&&make install
启动:
端口占用检查: lsof -i:端口号
Ubuntu下安装ffmpeg:
方式1:直接安装:
1.1 添加源:
sudo add-apt-repository ppa:djcj/hybrid
1.2 更新源:
sudo apt-get update
1.3 下载安装:
sudo apt-get install ffmpeg
方式2:编译安装:
2.1. 支持库的安装:
sudo apt-get install -y autoconf automake build-essential git libass-dev libfreetype6-dev libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev
apt install libavformat-dev
apt install libavcodec-dev
apt install libswresample-dev
apt install libswscale-dev
apt install libavutil-dev
apt install libsdl1.2-dev
sudo apt-get install yasm
2.2 x264:
gir clone https://github.com/qupai/x264
cd x264
./configure --enable-shared --enable-pthread --enable-pic
make
make install
2.3 编译:
tar -jxvf ffmpeg-4.1.tar.bz2
cd ffmpeg-4.1
./configure --enable-libx264 --enable-gpl --enable-shared --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --enable-pic
make
sudo make install
export LD_LIBRARY_PATH=/usr/local/ffmpeg/lib:$LD_LIBRARY_PATH
ldd ffmpeg
此时遇到的问题:
ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory
sudo find / -name libavdevice.so.58 # 找到文件对应地址
sudo vim /etc/ld.so.conf # 文件尾添加一行 /usr/local/lib
sudo ldconfig # 执行该句,使上面的文件生效
重新运行ffmpeg -encoders | grep x264就可以了。