思路:
之前2020年在本科的時候,由于項目的需求需要將海康威視的攝像頭使用推流服務器到網頁進行直播。這里將自己半個月琢磨出來的步驟給大家發一些。切勿轉載!!!!
使用網絡攝像頭中的rtsp協議---------通過rtsp鏈接讓推流軟件獲取到視頻流------推流軟件推流到直播服務器-----直播服務器的搭建-----使用flv.js進行直播
1、需要的設備。
1、攝像頭:必須是網絡攝像頭,支持rtsp協議。例如本教程中的海康威視攝像頭
2、一個centos的服務器(由于只找到了centos的教程,這里沒有ubuntu的教程。不過后來使用了寶塔面板,所以其實都無所謂)
3、一臺window電腦(用于obs推流)
2、具體步驟
1、搭建直播服務器
1、配置centos的網絡服務,讓該虛擬機以局域網的形式鏈接到實驗室的網絡(網絡上進行搜索,成功的標準是你的主機可以ping通你的虛擬機。例如下圖
2、安裝寶塔面板
寶塔Linux面板安裝教程 - 2023年5月11日更新 - 7.9.10正式版 - Linux面板 - 寶塔面板論壇
這里有執行命令
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
2、登錄寶塔面板
安裝完成后,在你的shell頁面會有登錄的用戶名和密碼。還有登錄網址。登錄到寶塔網站后,會有建議讓你安裝一些軟件。不要安裝nginx,不要安裝nginx,不要安裝nginx。這里是我對我的寶塔配置,僅供參考。
3、安裝gcc-c++環境
yum install -y gcc gcc-c++ autoconf wget
yum -y install wget gcc-c++ ncurses ncurses-devel cmake make perl bison openssl openssl-devel gcc* libxml2 libxml2-devel curl-devel libjpeg* libpng* freetype*
4、下載nginx-http-flv-module
這個大家在網上找一下,如果一定是這個模塊嗷,這里是我之前下載的東西
??winshining-nginx-http-flv-module-master.zip
5、把解壓后的里面的flv框架放在/www/server(這個路徑如果沒有,重新安裝寶塔)
6、接下來修改寶塔的nginx的安裝腳本,可以通過寶塔面板文件管理打開路徑
7、添加自定義模塊
8、在下面的框框里面輸入這些
--add-module=/www/server/nginx-http-flv-module
8、然后修改后點擊提交后,等待安裝
9、安裝完成后查看時候安裝成模塊輸入(記住V是大寫的)
nginx -V
10、如果你看到這著,恭喜你,已經成功一半了。
11、然后編寫配置文件
你可以寶塔面板里面的首頁里面進行修改。
12、然后對nginx進行配置。
user www www;
worker_processes auto;
error_log /www/wwwlogs/nginx_error.log crit;
pid /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;events{use epoll;worker_connections 51200;multi_accept on;}
rtmp {server {listen 1935; #Nginx監聽的RTMP推流/拉流端口application live {live on; #當推流時,RTMP路徑中的APP(RTMP中一個概念)匹配myapp時,開啟直播record off; #不記錄視頻gop_cache off;}}
}
http{include mime.types;#include luawaf.conf;include proxy.conf;default_type application/octet-stream;server_names_hash_bucket_size 512;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 50m;sendfile on;tcp_nopush on;keepalive_timeout 60;tcp_nodelay on;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 256k;fastcgi_intercept_errors on;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.1;gzip_comp_level 2;gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;gzip_vary on;gzip_proxied expired no-cache no-store private auth;gzip_disable "MSIE [1-6].";limit_conn_zone $binary_remote_addr zone=perip:10m;limit_conn_zone $server_name zone=perserver:10m;server_tokens off;access_log off;server{listen 888;server_name phpmyadmin;index index.html index.htm index.php;root /www/server/phpmyadmin;#error_page 404 /404.html;include enable-php.conf;location ~ .*.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;}location ~ .*.(js|css)?${expires 12h;}location ~ /.{deny all;}access_log /www/wwwlogs/access.log;}
server {listen 8432; #1.你想讓你的這個項目跑在哪個端口server_name localhost; #2.當前服務器ip#root /www/server/nginx/hls;location /live {#開啟flv直播flv_live on;chunked_transfer_encoding on;# 這里是要負責跨域呀add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Credentials' 'true';} }include /www/server/panel/vhost/nginx/*.conf;
}
13、你主要需要加入的是一下配置
這個是rtmp直播配置,可以照抄
rtmp {server {listen 1935; #Nginx監聽的RTMP推流/拉流端口application live {live on; #當推流時,RTMP路徑中的APP(RTMP中一個概念)匹配myapp時,開啟直播record off; #不記錄視頻gop_cache off;}}
}
這個是網頁訪問的配置。也可以照抄
server {listen 8432; #1.你想讓你的這個項目跑在哪個端口server_name localhost; #2.當前服務器iplocation /live {#開啟flv直播flv_live on;chunked_transfer_encoding on;#配置跨域add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Credentials' 'true';} }
再修改完數據后,要重載配置,然后重啟配置
15,開啟1935和8435端口
2、下載配置obs
安裝它就可以了
1、添加媒體源,就是攝像頭的rtsp的鏈接。
隨便填寫就可以。
取消本地文件的勾選
然后再這個輸入里面填寫攝像頭的rtsp的鏈接。
再本實驗的rtsp為
rtsp://admin:123456789a@211.64.41.218:554/h264/ch1/main/av_stream
2、設置推流地址
點擊文件里面的設置
點擊推流
這里如果你的配置是和我的一樣,那么就如此添加。
這里的live的是你配置的rtmp的application的名字。這里的串流密鑰是index 你可以隨便寫。
然后,點擊應用和確定
點擊開始推流
如果這里是這樣的有綠標,就說明推流成功。
3、運行拉流
這里有一個例子,有好多人說這個例子失效了,我上傳到CSDN后,居然需要VIP才能下載,我想了一下,要不就用百度網盤吧。
鏈接:https://pan.baidu.com/s/1pDmC5GpualMdrzSm85rsiApwd=qhhp
提取碼:qhhp
??直播2.zip
這里說一下url的拼寫
'http://211.64.41.229:8432/live?port=1935&app=live&stream=index’中port是rtmp端口,app是rtmp中application的名字,而stream就是推流時指定的。然后就可以得到了視頻
3、關于在線播放的配置。
在線播放也較為簡單,你需要調低碼率,要不然,你的直播帶寬會很大。
1、調低碼率
(1)、先停止推流。然后打開文件
(2)、打開設置。打開輸出
(3)、然后講輸出模式調到高級,然后將串流的比特率改為800Khps
(4)然后點擊應用,然后確定即可