監(jiān)控視頻web播放方案

在線監(jiān)控視頻用的喝瞻荆康,RTSP協(xié)議盆繁,支持直播和回放掀淘,項(xiàng)目前期用的flash播放器,到2020年底flash已不再被瀏覽器支持改基,因此公司需要實(shí)現(xiàn)一種支持瀏覽器(H5)播放的方案繁疤。

直播

目前直播的技術(shù)方案一般是:把RTSP流轉(zhuǎn)成RTMP流推到RTMP流媒體服務(wù)器上咖为,瀏覽器請(qǐng)求RTMP流開(kāi)始播放秕狰。
RTMP是Adobe公司推出的格式稠腊,視頻格式是flv,這個(gè)不能直接在瀏覽器里播放除非用flash播放器鸣哀,可以把flv.js把flv視頻流轉(zhuǎn)成http流架忌。
用nginx做為RTMP流媒體服務(wù)器,
RTSP流轉(zhuǎn)成RTMP流用ffmpeg實(shí)現(xiàn)我衬,ffmpeg api不太好用叹放,因此用java Process調(diào)ffmpeg命令行實(shí)現(xiàn),需要把process的inputStream和errorStream要讀取出來(lái)挠羔。
命令demo:

ffmpeg -re -rtsp_transport tcp -i rtsp://ip:554/Streaming/Channels/101?transportmode=unicast -vcodec copy -acodec aac -f flv rtmp://ip:1935/live/c1233a2402615b76f04e8cc16869e6a8_live

nginx配置:

rtmp {
    server {
        listen 1935;  # 接受推流的端口號(hào)
        chunk_size 8192; # 單一推流數(shù)據(jù)包的最大容量井仰?

        application live { # 可以自行更換名字
            live on; # 打開(kāi)直播
            meta off; # 為了兼容網(wǎng)頁(yè)前端的 flv.js,設(shè)置為 off 可以避免報(bào)錯(cuò)
            gop_cache on; # 支持GOP緩存破加,以減少首屏?xí)r間俱恶,但也會(huì)增加視頻延時(shí)
            allow play all; # 允許來(lái)自任何 ip 的人拉流
        }
    }
}

location /live { # 拉流時(shí)的 uri ,可以自行修改
            flv_live on; # 打開(kāi) http-flv 服務(wù)
            chunked_transfer_encoding on;
            add_header 'Access-Control-Allow-Origin' '*'; # 允許跨域
            add_header 'Access-Control-Allow-Credentials' 'true';
        }

location /playback {
             root html;
             add_header 'Access-Control-Allow-Origin' '*';

       }

回放

回放視頻轉(zhuǎn)碼和直播一樣范舀,前端用video.js合是。
flv.js不支持手機(jī)瀏覽器,同時(shí)也為了在回放的時(shí)候可以暫停锭环、拖動(dòng)聪全,因此回放采用了hls方案,hls的延遲會(huì)更大辅辩,但是把hls_time設(shè)小點(diǎn)也能減少延遲难礼。
參數(shù)示例:

ffmpeg/bin/ffmpeg -re -rtsp_transport tcp -i rtsp://ip:554/Streaming/tracks/101?starttime=20201102t110204z&endtime=20201102t120920z -ss 00:00:00 -to 01:07:16 -tune zerolatency -preset ultrafast -hls_flags split_by_time -hls_time 2 -hls_list_size 0 -hls_wrap 0 -s 720x576 -r 25 -vcodec libx264 -b:v 500000 -acodec aac -b:a 64000 -g 30 -y /usr/local/nginx/html/playback/2829fa0d1b98c75ef90baa979944da2d_playback.m3u8

注意點(diǎn)

  1. ffmpeg的命令參數(shù)位置不能亂放,參數(shù)主要針對(duì)視頻玫锋、音頻編碼蛾茉,碼率,幀率景醇,分辨率臀稚,gop_size, 編碼速度等方面的配置。
  2. 直播上顯示的時(shí)間和系統(tǒng)時(shí)間會(huì)有5秒的延遲三痰,這方面可以把gop_cache禁掉吧寺,但是首屏打開(kāi)要很長(zhǎng)時(shí)間。
  3. flv.js在播放一段時(shí)間后散劫,會(huì)產(chǎn)生累積延遲稚机,這個(gè)是TCP特性造成的,可以在js里定時(shí)任務(wù)判斷追平获搏。

參考:
https://blog.csdn.net/wishfly/article/details/53079303
https://www.cnblogs.com/yulibostu/articles/11623493.html
https://blog.csdn.net/kingvon_liwei/article/details/79271361
https://blog.csdn.net/weixin_40777510/article/details/103764198
https://blog.csdn.net/string_kai/article/details/100598268
https://ffmpeg.org/ffmpeg.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赖条,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纬乍,老刑警劉巖碱茁,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異仿贬,居然都是意外死亡纽竣,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)茧泪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蜓氨,“玉大人,你說(shuō)我怎么就攤上這事队伟⊙ù担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵嗜侮,是天一觀的道長(zhǎng)港令。 經(jīng)常有香客問(wèn)我,道長(zhǎng)棘钞,這世上最難降的妖魔是什么缠借? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮宜猜,結(jié)果婚禮上泼返,老公的妹妹穿的比我還像新娘。我一直安慰自己姨拥,他們只是感情好绅喉,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著叫乌,像睡著了一般柴罐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上憨奸,一...
    開(kāi)封第一講書(shū)人閱讀 52,475評(píng)論 1 312
  • 那天革屠,我揣著相機(jī)與錄音,去河邊找鬼排宰。 笑死似芝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的板甘。 我是一名探鬼主播党瓮,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼盐类!你這毒婦竟也來(lái)了寞奸?” 一聲冷哼從身側(cè)響起呛谜,我...
    開(kāi)封第一講書(shū)人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎枪萄,沒(méi)想到半個(gè)月后隐岛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呻引,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年礼仗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吐咳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逻悠。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖韭脊,靈堂內(nèi)的尸體忽然破棺而出童谒,到底是詐尸還是另有隱情,我是刑警寧澤沪羔,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布饥伊,位于F島的核電站,受9級(jí)特大地震影響蔫饰,放射性物質(zhì)發(fā)生泄漏琅豆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一篓吁、第九天 我趴在偏房一處隱蔽的房頂上張望茫因。 院中可真熱鬧,春花似錦杖剪、人聲如沸冻押。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)洛巢。三九已至,卻和暖如春次兆,著一層夾襖步出監(jiān)牢的瞬間稿茉,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工芥炭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留漓库,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓蚤认,卻偏偏與公主長(zhǎng)得像米苹,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子砰琢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361