1. 前言
????????需求:web端實現(xiàn)??禂z像頭實時預覽效果
????????由于市面上大部分網(wǎng)絡攝像頭都支持RTSP協(xié)議視頻流,web端一般無法直接使用RTSP實現(xiàn)視頻預覽,本篇使用ffmpeg對視頻流進行轉(zhuǎn)換,最終實現(xiàn)web端實時預覽。
????????工具介紹:ffmpeg、nginx、vue
2. nginx
????????介紹:高性能的http和反向代理web服務器,同時提供了IMAP、POP3、SMTP服務。
2.1. 安裝nginx依賴
2.1.1. pcre
????????下載地址若失效可自行去網(wǎng)上找
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar -zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure
make
sudo make install
2.1.2. zlib
若鏈接失效跳轉(zhuǎn)官方https://zlib.net/
wget http://zlib.net/zlib-1.2.13.tar.gz
tar -zxf zlib-1.2.13.tar.gz
cd zlib-1.2.13
./configure
make
sudo make install
2.1.3. openssl
wget http://www.openssl.org/source/openssl-fips-2.0.10.tar.gz
tar -zxvf openssl-fips-2.0.10.tar.gz
cd openssl-fips-2.0.10
./config && make && make install
2.1.4. 下載nginx:nginx-http-flv-module
git clone https://github.com/winshining/nginx-http-flv-module.git
2.1.5. 安裝nginx
wget http://nginx.org/download/nginx-1.10.2.tar.gz
tar zxvf nginx-1.10.2.tar.gz
cd nginx-1.10.2
# 編譯時指定nginx-http-flv-module的目錄
./configure --add-module=/opt/nginx-http-flv-module
make
sudo make install
????????到此,nginx已經(jīng)安裝完成了,接下來修改nginx的配置,配置模板在https://github.com/winshining/nginx-http-flv-module.git最后給出的example configuration取nginx.conf替換掉nginx默認的nginx.conf
配置模板中只需修改server_name改成自己服務器的IP地址
cd /usr/local/nginx/conf
mv nginx.conf nginx.conf_bak
# 上傳配置模板..
# 啟動nginx
cd /usr/local/nginx/sbin
./nginx
3. ffmpeg
3.1. ffmpeg介紹
????????它的官網(wǎng)為:https://ffmpeg.org/,由Fabrice Bellard(法國著名程序員Born in 1972)于2000年發(fā)起創(chuàng)建的開源項目。該人是個牛人,在很多領域都有很大的貢獻。
????????FFmpeg是多媒體領域的萬能工具。只要涉及音視頻領域的處理,基本上沒有它做不了的事情!通俗點講,從視頻錄制、視頻編輯再到播放,它都能做!
? ? ? ? 抖音,愛奇藝、騰訊視頻、優(yōu)酷視頻,還有播放器,像QQ影音、暴風影音等,都離不開它!否則非常痛苦!為什么呢?
????????因為又要招一大幫人來把多媒體領域內(nèi)的基礎工具(音視頻編解碼器、文件格式和協(xié)議庫、濾鏡庫等等)實現(xiàn)掉。
3.2. 安裝yasm
ffmpeg為了提高編譯速度,使用了匯編指令,如果系統(tǒng)中沒有yasm指令的話編譯會報錯
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
sudo make install
3.3. ffmpeg安裝
wget http://www.ffmpeg.org/releases/ffmpeg-4.1.tar.gz
tar -zxvf ffmpeg-4.1.tar.gz
# 創(chuàng)建ffmpeg文件夾,指定安裝目錄
mkdir /opt/ffmpeg
cd /opt/ffmpeg-4.1
./configure --prefix=/usr/local/ffmpeg
make # 這一步很慢,大概5-10分鐘,耐心等待
sudo make install
3.4. 配置環(huán)境變量
配置環(huán)境變量使命令全局生效
vi /etc/profile
# 在最后PATH添加環(huán)境變量:
export PATH=$PATH:/opt/ffmpeg/bin
# 保存退出
source /etc/profile
# 將ffmepg的lib目錄鏈接到系統(tǒng)庫中
vi /etc/ld.so.conf
# 在文檔后追加內(nèi)容: /opt/ffmpeg/lib/
# 指定ffmpeg的安裝目錄lib文件夾,添加完后執(zhí)行l(wèi)dconfig,使配置生效
ldconfig
# 查看版本,測試是否生效
ffmpeg --version
????????到此ffmpeg和nginx都已經(jīng)安裝完成了,接下只需要執(zhí)行ffmepg相關(guān)的命令開始推流進行轉(zhuǎn)換操作,之后配和nginx對轉(zhuǎn)換后的流進行訪問,就可以在頁面上實現(xiàn)實時預覽了
4. ffmpeg推流
????????ffmpeg命令非常多,本次測試也踩了一些坑,最終找到一條可以正常轉(zhuǎn)換,預覽的命令;
????????ffmpeg支持對不同的流轉(zhuǎn)換到不同的流,本次測試對??低旽.264碼流轉(zhuǎn)換成FLV格式的流。需要其它流轉(zhuǎn)換的小伙伴可以去官網(wǎng)或者百度搜索相關(guān)的轉(zhuǎn)換命令。
ffmpeg -ss 0:01 -rtsp_transport tcp -i rtsp://user:password@ip:port/h264/ch1/main/av_stream -c copy -f flv rtmp://127.0.0.1:1935/myapp/test1
命令參數(shù)介紹
ffmpeg -ss 0:01 -rsto_transport tcp -i:固定寫法
rtsp://user:password@ip:port/h264/ch1/main/av_stream
??档膔stp鏈接模板
user:??涤脩裘?/p>
password:海康用戶密碼
ip:??禂z像頭ipv4地址
port:??禂z像機端口
h264:??抵С值拇a流編碼
ch1:通道號
main:主碼流(sub 子碼流)
av_stream:主碼流
-c copy: 對流輸出進行復制,不再進行編碼
-f flv:轉(zhuǎn)成flv格式
rtmp://127.0.0.1:1935/myapp/test:與nginx配置相對應,1935為nginx的rtmp配置的端口,myapp是nginx.conf配置的application,test是自定義的名稱,也就是后面通過頁面訪問用到的uri地址
5. web頁面取流
取流URL:http://ip:port/live?port=1935&app=myapp&stream=test
參數(shù)介紹
ip:port:nginx代理的ip、port,由于是http協(xié)議,一定要使用nginx代理的http協(xié)議端口
live:nginx配置中的路由地址
port=1935:nginx的rtmp協(xié)議端口
app=myapp:nginx配置的應用名稱
stream=test:上文進行推流的地址名稱文章來源:http://www.zghlxwxcb.cn/news/detail-824357.html
5.1. 前端代碼
????????由于我們使用的flv碼流類型,所以前端要使用一款支持flv視頻類型的插件進行展示,網(wǎng)上插件很多,不再做介紹。文章來源地址http://www.zghlxwxcb.cn/news/detail-824357.html
到了這里,關(guān)于記錄對接??低晹z像頭web端實時預覽:Linux+ffmpeg+nginx轉(zhuǎn)換RTSP視頻流(完整版實現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!