1. 程式人生 > >直播技術總結(一)流媒體伺服器搭建,進行推流

直播技術總結(一)流媒體伺服器搭建,進行推流

前言:直播技術,近年來,相當火,先且不說Codec部分,那它到底複雜麼? 服務端推流,客戶端進行拉流,兩者結合,變成直播,應該說如何優化直播的實時性中的問題,才是複雜部分,如網路原因,如視訊卡頓等。今天介紹直播技術總結中流媒體伺服器搭建,進行推流,用Mac搭建nginx+rtmp伺服器。

簡介

nginx是非常優秀的開源伺服器,用它來做hls或者rtmp流媒體伺服器是非常不錯的選擇。

步驟安裝

1、安裝Homebrow

Homebrew簡稱brew,是Mac OSX上的軟體包管理工具,能在Mac中方便的安裝軟體或者解除安裝軟體,可以說Homebrew就是mac下的apt-get、yum神器 ,因為Mac 本身也是基於unix核心的。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

這裡寫圖片描述

安裝Homebrow中

這裡寫圖片描述

安裝Homebrow好了,如下:

這裡寫圖片描述

2、安裝Nginx伺服器

增加對 nginx 的擴充套件;也就是從github上下載,home-brew對ngixnx的擴充套件,對應命令如下:

brew tap homebrew/nginx

這裡寫圖片描述

3、安裝Nginx伺服器和rtmp模組

brew install nginx-full --with-rtmp-module

這個安裝過程,耗時相對來說比較長。通過操作以上步驟nginx和rtmp模組就安裝好了,下面開始來配置nginx的rtmp模組。

這裡寫圖片描述

安裝過程,各種等

這裡寫圖片描述

終於安裝好了

這裡寫圖片描述

接下來可以看看nginx安裝在哪裡

brew info nginx-full

執行上面的命令後我們可以看到資訊

這裡寫圖片描述

一些ngnix命令:

  • ngnix -s reload:表示重新載入配置檔案
  • ngnix -s reopen: 再次開啟日誌檔案
  • ngnix -s stop : 停止伺服器
  • ngnix -s quit : 退出伺服器

nginx檔案目錄:

  • nginx安裝所在位置 /usr/local/Cellar/nginx-full/1.10.1/bin/nginx
  • nginx配置檔案所在位置 /usr/local/etc/nginx/nginx.conf
  • nginx伺服器根目錄所在位置 /usr/local/var/www

執行命令 ,測試下是否能成功啟動nginx服務

nginx

這裡寫圖片描述

4、配置rtmp

我們先進入nginx目錄下,用ls,看下其檔案,並用 cat 讀取下nginx.conf檔案:

這裡寫圖片描述

用notepad++開啟nginx.conf, 找到/usr/local/etc/nginx/nginx.conf 檔案,就可以開啟.

或者開啟Finder, 執行快捷鍵: Shift + command + G前往,用記事本工具開啟nginx.conf.

這裡寫圖片描述

http {
    ……
}
在http節點下面(也就是檔案的尾部)加上rtmp配置:
rtmp {
    server {
        listen 1935;
        application test {
            live on;
            record off;
        }
    }
}

引數說明下:

  • rtmp是協議名稱
  • server 說明內部中是伺服器相關配置
  • listen 監聽的埠號, rtmp協議的預設埠號是1935
  • application 訪問的應用路徑是 zbcs
  • live on; 開啟實時

這裡寫圖片描述

5、儲存檔案後,重新載入nginx的配置檔案(這一步很重要)

nginx -s reload

6、安裝ffmepg工具

brew install ffmpeg

這裡寫圖片描述

安裝ffmepg中,可以看到各種慢,引起的中斷,因為被牆的原因:

這裡寫圖片描述

安裝這個需要等一段時間, 這時你可以準備一個視訊檔案作為來推流,然後安裝一個支援rtmp協議的視訊播放器.Mac下可以用 VLC(點選下載)

7、通過ffmepg命令開始進行推流

ffmpeg -re -i /Users/mac/Downloads/田埂上的夢.mp4  -vcodec copy -f flv rtmp://localhost:1935/test/live

這裡test是上面的配置檔案中,配置的application名稱;後面的live,根據自己需要去寫

這裡寫圖片描述

最後我們用VLC工具來,看下效果,本來想寫一個Android mediaplayer來播放這個,就變成了在手機上看直播了,覺得都一樣,就用VLC來演示了:

這裡寫圖片描述

第一時間獲得部落格更新提醒,以及更多android乾貨,原始碼分析,歡迎關注我的微信公眾號,掃一掃下方二維碼或者長按識別二維碼,即可關注。


這裡寫圖片描述

如果你覺得好,隨手點贊,也是對筆者的肯定,也可以分享此公眾號給你更多的人,原創不易

相關推薦

直播技術總結媒體伺服器搭建進行

前言:直播技術,近年來,相當火,先且不說Codec部分,那它到底複雜麼? 服務端推流,客戶端進行拉流,兩者結合,變成直播,應該說如何優化直播的實時性中的問題,才是複雜部分,如網路原因,如視訊卡頓等。今天介紹直播技術總結中流媒體伺服器搭建,進行推流,用Mac搭

媒體視訊直播類研究:Windows環境下部署Red5-Server媒體伺服器

流媒體檔案是目前非常流行的網路媒體格式之一,這種檔案允許使用者一邊下載一邊播放,從而大大減少了使用者等待播放的時間。另外通過網路播放流媒體檔案時,檔案本身不會在本地磁碟中儲存,這樣就節省了大量的磁碟空間開銷。正是這些優點,使得流媒體檔案被廣泛應用於網路播放。 最近專案組在

直播技術總結如何快速起播直播

經常會看到,很多公司都在頻寬和卡頓中抉擇,想把H.265編碼格式做為視訊編碼格式普及開來,用於客戶端播放,無論在TV上,還是手機上,由於很多裝置不支援這種編碼格式,所以往往要做適配。有人問,為什麼大家都在說切H.265? H.265是ITU-T VCEG

elasticsearch技術總結-叢集分片

一 分片概念以及設定分片概念:一個 分片 是一個底層的 工作單元 ,它僅儲存了全部資料中的一部分。我們往 Elasticsearch 新增資料時需要用到索引 —— 儲存相關資料的地方。索引實際上是指向一個或者多個物理 分片 的 邏輯名稱空間。分片分為主分片和副本,數量可以設定

JDBC技術總結

1. JDBC簡介        SUN公司為了簡化、統一對資料庫的操作,定義了一套java操作資料庫的規範,稱之為JDBC,JDBC不能直接操作資料庫,JDBC通過介面載入資料庫的驅動,然後操作資料庫。JDBC:Java Data Base Connectivity,它主要由介面組成。組成JDBC的2個包

直播技術總結音視訊資料壓縮及編解碼基礎

音視訊壓縮技術是編解碼中難點,常常會涉及很多演算法處理問題。資料封裝,轉封裝等,看下Agenda: 音視訊為何需要壓縮? 壓縮編碼的分類 常用壓縮編碼的方法 編碼器中的關鍵技術 預測 量化 變換 熵編碼 編解碼中的情況 音視訊為何需要壓縮? 未經

CNN視覺化技術總結--特徵圖視覺化

導言:     在CV很多方向所謂改進模型,改進網路,都是在按照人的主觀思想在改進,常常在說CNN的本質是提取特徵,但並不知道它提取了什麼特徵,哪些區域對於識別真正起作用,也不知道網路是根據什麼得出了分類結果。      &nbs

Mybatis總結:mybatis的搭建

ack pen devel column 3.3 exception ive pri tac mybatis:它抽象了大量的jdbc代碼,並提供了一個簡單易用的API和數據庫交互。 mybatis的優勢:它消除了大量jdbc冗余的代碼、它可以接受SQL語句。 mybati

Web伺服器學習總結:web伺服器簡介

一、WEB伺服器 1.1、WEB伺服器簡介   1、Web伺服器是指駐留於因特網上某種型別計算機的程式,是可以向發出請求的瀏覽器提供文件的程式。當Web瀏覽器(客戶端)連到伺服器上並請求檔案時,伺服器將處理該請求並將檔案反饋到該瀏覽器上,附帶的資訊會告訴瀏覽器如何檢視該檔案(即檔案型別)。   

pcap學習總結——網絡卡型別獲得指向網絡卡的指標釋放網絡卡

1:pcap_if_t:typedef struct pcap_if pcap_if_t 儲存網絡卡基本資訊的型別。通常用指標來使用,pcap_if_t *alldevs struct pcap_if { struct pcap_if *next;//指向下一個網絡卡 ch

C++ STL開發溫習與總結: 1.C++程式設計技術

 C++ STL開發溫習與總結(一):1.C++程式設計技術       使用了多年C++,沒有系統的溫習總結過,所以準備溫習《C++STL程式設計師開發指南》,本系列篇章將會是溫習總結該書本概念和技術點。 1概論 l  C++語言是基於C語言的語法基礎上融入了其他語

利用ffmpeg錄製rtsp的方法總結

這裡主要結合平時對音視訊的學習,將ffmpeg錄製rtsp的方法在這裡記錄下。 首先,一般的錄製過程都是按照如下的流程圖進行錄製,除非某些不存在音訊的特殊情況。  這個是總體的錄製流程,然而這個流程對於推流來說也適用。因此對於流程中每一步的實現,需要弄明白。 在進入

Windows下Red5媒體伺服器搭建及使用

前段時間把red5伺服器搭建好了,現在記錄下是如何搭建的。 1,下載對應版本的red5 https://github.com/Red5/red5-server/releases 2,如果沒有安裝JAVA環境的安裝JDK並設定環境變數(該步驟自行搜尋) 3,解壓red5

IO學習總結

什麼是IO流IO流之前也接觸了好多次,因為這一塊內容很多,所以老是有不太清楚的地方,所以現在來總結一下。流分為位元組流,字元流。簡單的說,位元組流就是由二進位制資料組成的流,一個位元組八個bit,這個計算機很容易理解,但是不方便人閱讀,所以就有了字元流。字元流,有不同的編碼方

java_web項目開發經驗總結

從數據 簡單 處理 開發 事務 傳輸 記錄 承載 基礎上   web項目就像一個動態的記事本,功能很強大,你最初的項目功能調研越給力,項目所能發揮的作用也就越給力。這是因為web網絡的強聯系性,大家都可以通過訪問到自己想要訪問的頁面,頁面裏既可以承載信息,也可以承載做事情的

文檔總結——文檔的概述

理解 需要 軟件需求 是否 研究 strong 開發項目 問題 項目開發 寫完文檔後,本來想寫一篇具體的文檔的總結的,後來看大家都寫的具體文檔總結,於是我就想:我還是寫一些跟大家不一樣的東西吧。 所以,我就說說我對各個文檔的宏觀理解吧。

salesforce零基礎學習七十二項目中的零碎知識點小總結

gin 不同 grant dmi ima -m ron 角色 com 項目終於告一段落,雖然比較苦逼,不過也學到了好多知識,總結一下,以後當作參考。 一.visualforce標簽中使用html相關的屬性使用 曾經看文檔沒有看得仔細,導致開發的時候走了一些彎路。還好得到

OpenGL在MFC中的使用總結——基本框架

palette 接受 white 要求 無效 結構 del 一次 是你 項目中要畫3D顯示的模型,於是要用到OpenGL,加上是在MFC中,並且是在MFC中的ActiveX中使用。再並且鑒於他們程序主框架的設定。常規的方法還不一定能實現。所以還是查過不少資料,在此一一總

操作系統基礎知識總結

一個 快速 會有 處理死鎖 b2c fcm 死鎖 空間 存儲系統 1. 進程和線程的區別 進程 進程,即正在運行的程序,程序從硬盤載入到內存就變成進程。進程是資源的擁有者,每個進程都擁有著自己的內存空間與多個線程。 線程 線程是指令的執行者,是計算機執行指令的基本單元,一個

react native 知識點總結

修改 ltp 組件 改變 set 覆蓋 sta 一個 個數 一、關於react native 版本的升級 參照文檔:http://reactnative.cn/docs/0.45/upgrading.html react-native -v