直播源的製作對整個開發和調試很重要。
方式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就可以了。