使用Nginx搭建rtmp流媒體伺服器筆記

fulinux發表於2017-05-20

平臺軟硬體環境:PC,ubunut 16.04


主要是做個記錄,方便日後查詢。


主要是參考這篇部落格:http://www.jianshu.com/p/f0bf83ca3ea3


碰到的第一個問題:

error: ‘OPENSSL_config’ is deprecated [-Werror=deprecated-declarations]

一開始以為Ubuntu安裝了openssl和libssl-dev就可以,不需要獨立的去便於openssl,但是出現了這個問題,查閱資料發現需要自己編譯openssl,我修改了上述連結中提到的cfg.sh檔案如下:

auto/configure --prefix=/usr/local/nginx \
    --with-pcre=../pcre-8.39 \
    --with-zlib=../zlib-1.2.11 \
    --with-openssl=../openssl \
    --with-http_ssl_module \
    --with-http_v2_module \
    --with-http_flv_module \
    --with-http_mp4_module \
    --add-module=../nginx-rtmp-module/

下載openssl庫


第二個問題:

[tcp @ 0x5598c71fc820] Connection to tcp://localhost:1935 failed: Connection refused
[rtmp @ 0x5598c71fc320] Cannot open connection tcp://localhost:1935
rtmp://localhost:1935/live/video: Connection refused

這個問題弄了半天,參考很多部落格修改/etc/nginx/nginx.conf配置檔案,然後reload都不行。這個問題主要的原因是nginx使用的配置檔案不是/etc/nginx/nginx.conf。在自行編譯nginx之前,我有通過apt-get安裝過ubunut自己的nginx,但是我自己編譯的nginx安裝的目錄是/usr/local/nginx,在這個目錄下也有配置一個配置檔案:/usr/local/nginx/conf/nginx.conf。真正使用的也是/usr/local/nginx/conf/nginx.conf配置檔案,在檔案結尾新增如下內容:

rtmp {
    server {
        listen 1935;
        application live {
            live on;
            record off;
        }
    }
}

第3個問題:

[flv @ 0x5632f0152a20] FLV does not support sample rate 48000, choose from (44100, 22050, 11025)
[flv @ 0x5632f0152a20] Audio codec mp3 not compatible with flv
Could not write header for output file #0 (incorrect codec parameters ?): Function not implementedStream m


此時我使用的命令是:

ffmpeg -re -i /home/fulinux/test.mp4 -c copy -f flv rtmp://localhost:1935/live/video

可能是因為test.mp4是一個超清的視訊,讓後我通過下面的方法,將其轉換為flv格式的:

ffmpeg -i test.mp4 -c:v libx264 -ar 22050 -crf 25 -acodec aac -f flv test.flv


轉換成功後通過下面的命令推流:

ffmpeg -re -i /home/fulinux/piano.flv -c copy -f flv rtmp://localhost:1935/live/video

並通過如下命令播放:

ffplay rtmp://localhost:1935/live/video





相關文章