nginx rtmp + video.js + 攝像頭rtsp流

利用docker搭建nginx rtmp流媒體服務(wù)器陨囊,將攝像頭的rtsp視頻流推送到流媒體服務(wù)器,在web頁面用video.js播放乃戈。

Docker搭建nginx rtmp流媒體服務(wù)器

可以用docker hub上別人上傳的鏡像直接用,https://hub.docker.com/r/alfg/nginx-rtmp 话告, 這個鏡像的地址有詳細(xì)說明。

docker pull alfg/nginx-rtmp
docker run -id -p 1935:1935 -p 8080:80 --name nginx-rtmp --rm alfg/nginx-rtmp

這個服務(wù)器的推流地址

rtmp://localhost:1935/stream/hello

拉流地址是

http://localhost:8080/live/hello.m3u8

上面地址的 ‘hello’可以自定義

我們可以嘗試用obs推流

image.png
image.png

然后就可以用VLC播放了

video.js播放

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <title>demo</title>
    <link  rel="stylesheet" />
  </head>

  <body>
    <video
      id="myVideo"
      class="video-js vjs-default-skin vjs-big-play-centered"
      controls
      autoplay
      muted
      preload="auto"
      width="1080"
      height="708"
      data-setup="{}"
    >
      <source
        id="source"
        src="http://localhost:8080/live/hello.m3u8"
        type="application/x-mpegURL"
      />
    </video>
  </body>
  <script src="https://vjs.zencdn.net/7.4.1/video.js"></script>
</html>


在Vue項(xiàng)目中使用卵慰,也是用video.js沙郭,在github上有個 https://github.com/surmon-china/vue-video-player適用于 Vue 的播放器組件
,就是在vue中集成video.js裳朋。

在vue單頁面應(yīng)用中使用:

先 npm install vue-video-player --save

然后

<template>
  <div id="video_player_demo">
    <video-player class="video-player-box"
                  ref="videoPlayer"
                  :options="playerOptions"
                  :playsinline="true"
                  customEventName="customstatechangedeventname"
                  @play="onPlayerPlay($event)"
                  @pause="onPlayerPause($event)"
                  @ended="onPlayerEnded($event)"
                  @waiting="onPlayerWaiting($event)"
                  @playing="onPlayerPlaying($event)"
                  @loadeddata="onPlayerLoadeddata($event)"
                  @timeupdate="onPlayerTimeupdate($event)"
                  @canplay="onPlayerCanplay($event)"
                  @canplaythrough="onPlayerCanplaythrough($event)"
                  @statechanged="playerStateChanged($event)"
                  @ready="playerReadied">
    </video-player>
  </div>
</template>

<script>
// require styles
import 'video.js/dist/video-js.css'

import { videoPlayer } from 'vue-video-player'

export default {
  components: {
    videoPlayer
  },
  data() {
    return {
      playerOptions: {
        // videojs options
        muted: true,
        autoplay: true,
        widt: '460',
        height: '360',
        language: 'en',
        playbackRates: [0.7, 1.0, 1.5, 2.0],
        sources: [
          {
            type: 'application/x-mpegURL',
            src: 'http://localhost:8080/live/hello.m3u8'
          }
        ],
        poster: '/static/images/author.jpg'
      }
    }
  },
  methods: {
    // listen event
    onPlayerPlay(player) {
      // console.log('player play!', player)
    },
    onPlayerPause(player) {
      // console.log('player pause!', player)
    },
    // or listen state event
    playerStateChanged(playerCurrentState) {
      // console.log('player current update state', playerCurrentState)
    },
    // player is ready
    playerReadied(player) {
      console.log('the player is readied', player)
      // you can use it to do something...
      // player.[methods]
    }
  }
}
</script>

代碼自由編寫調(diào)整病线。

C#程序推流

推流可以用obs,好像很多直播網(wǎng)站就是用這個推流的,
但是現(xiàn)在的場景不同鲤嫡,需要在后臺把攝像頭的rtsp流推到服務(wù)器送挑,就用ffmpeg,因?yàn)閒fmpeg太強(qiáng)大了。

找了很久沒有找到合適的.Net Core 平臺的ffmpeg庫暖眼,由于程序運(yùn)行在windows(攝像頭的服務(wù)器在windows上惕耕,而且這臺服務(wù)器rtsp流只能在內(nèi)網(wǎng)訪問,很累),目前不需要跨平臺诫肠,
那就直接通過C#的Process類直接調(diào)用ffmpeg.exe來推流司澎。

寫個控制臺程序:

using System;
using System.Diagnostics;
using System.IO;
using System.Threading;
using ffmpeg_demo.Test;

namespace ffmpeg_demo
{
    class Program
    {
        static void Main(string[] args)
        {
            string fromRTSP = "rtsp://admin:admin@192.168.0.1/cam/realmonitor?channel=1&subtype=0";

            string toRTMP = "rtmp://localhost:1935/stream/hello";

            ProcessStartInfo processStartInfo = new ProcessStartInfo();

            // 把ffmpeg.exe放在了項(xiàng)目根目錄下,通過Directory.GetCurrentDirectory()直接獲取到地址
            processStartInfo.FileName = Directory.GetCurrentDirectory() + @"\ffmpeg.exe";
            processStartInfo.Arguments = " -i " + fromRTSP + " -f flv -an " + toRTMP;
            processStartInfo.CreateNoWindow = false;


            Process process = new Process();
            process.StartInfo = processStartInfo;
            process.Start();
            Console.WriteLine("進(jìn)程名稱:" + process.ProcessName);
        }
    }
}


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末栋豫,一起剝皮案震驚了整個濱河市挤安,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌笼才,老刑警劉巖漱受,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異骡送,居然都是意外死亡昂羡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門摔踱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來虐先,“玉大人,你說我怎么就攤上這事派敷∮寂” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵篮愉,是天一觀的道長腐芍。 經(jīng)常有香客問我,道長试躏,這世上最難降的妖魔是什么猪勇? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮颠蕴,結(jié)果婚禮上泣刹,老公的妹妹穿的比我還像新娘助析。我一直安慰自己,他們只是感情好椅您,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布外冀。 她就那樣靜靜地躺著,像睡著了一般掀泳。 火紅的嫁衣襯著肌膚如雪雪隧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天员舵,我揣著相機(jī)與錄音膀跌,去河邊找鬼。 笑死固灵,一個胖子當(dāng)著我的面吹牛捅伤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播巫玻,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼丛忆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了仍秤?” 一聲冷哼從身側(cè)響起熄诡,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诗力,沒想到半個月后凰浮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡苇本,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年袜茧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓣窄。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡笛厦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出俺夕,到底是詐尸還是另有隱情裳凸,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布劝贸,位于F島的核電站姨谷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏映九。R本人自食惡果不足惜梦湘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧践叠,春花似錦、人聲如沸嚼蚀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轿曙。三九已至弄捕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間导帝,已是汗流浹背守谓。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留您单,地道東北人斋荞。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像虐秦,于是被迫代替她去往敵國和親平酿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 這幾天看到實(shí)驗(yàn)室里面的幾個師兄個個都在搞這個悦陋,本著好奇地心里去看看蜈彼,并自己動手簡單的搭一下 這個簡單的流媒體服...
    九尾74閱讀 3,513評論 0 4
  • 流媒體傳輸是“直播”中至關(guān)重要的環(huán)節(jié),在網(wǎng)絡(luò)傳輸媒體流的時候有著不同的流媒體傳輸協(xié)議俺驶。 做了一些小調(diào)查幸逆,在整個“直...
    valentizx閱讀 1,510評論 0 3
  • 今年秋天一直是晴天少,去年剛好相反暮现,都是晴天还绘。藍(lán)天白云,每天都是栖袋。因?yàn)槟阍凇?忍住沒走蚕甥,可是始終放不下。 是劫也是...
    林下聽泉閱讀 180評論 1 0
  • 瞧栋荸,她葉子金黃菇怀,枝干卻是青綠 真像是畫出來的,色彩 多么鮮亮晌块。在這個暮秋時節(jié) 我竟叫不出她的名字 多么奇怪爱沟!她就像...
    叮咚的你閱讀 250評論 0 2
  • 打卡日期:2019年5月5日 星期日 90天打卡累計天數(shù):86/90 宣言(和孩子共成長) 孩子第四個30天目標(biāo):...
    明媚的奮奮閱讀 121評論 0 0