直播專題問答(一)

提問:

  • day01:
    • 1弄贿、何為直播?何為點播矫膨?
    • 2差凹、簡述推流、拉流的工作流程侧馅?
    • 3危尿、常見的直播協(xié)議有哪些?之間有什么區(qū)別馁痴?
    • 4谊娇、常見的點播協(xié)議有有哪些?
    • 5罗晕、何為Nginx济欢?有什么特點赠堵?
    • 6、何為homebrew法褥?你用它安裝過什么茫叭?常用命令有哪些?
    • 7挖胃、ffmpeg是什么杂靶?
    • 8、RTMP酱鸭、HLS協(xié)議各自的端口號是吗垮?
    • 9、m3u8構(gòu)成是凹髓?直播中m3u8烁登、ts如何實時更新?
    • 10蔚舀、音視頻的編解碼器分別是什么饵沧?
    • 11、簡述如何在Mac上搭建本地直播服務(wù)器赌躺?

回答:

  • 1狼牺、我認為:直播是一個三方交互(主播、服務(wù)器礼患、觀眾)是钥,這個交互式實時的!盡管會根據(jù)選擇的協(xié)議不同而有一些延遲缅叠,但我們?nèi)哉J為它直播是實時的悄泥!--->主播在本地發(fā)送音視頻給服務(wù)器(推流),觀眾從服務(wù)器實時解碼(拉流)收看收聽主播發(fā)送給服務(wù)器的音視頻(直播內(nèi)容)肤粱。直播是不能快進的弹囚!
    點播:首先一定要明確的一點,點播不存在推流這一過程领曼,你本身你的流已經(jīng)早就推給服務(wù)器了鸥鹉,或者這么說也不對,應(yīng)該是你的音視頻早就上傳到了服務(wù)器悯森,觀眾只需要在線收看即可宋舷,由于你的音視頻上傳到了服務(wù)器,觀眾則可以通過快進瓢姻,快退祝蝠,調(diào)整進度條等手段各種收看!

  • 2、推流:在直播中绎狭,主播方向服務(wù)器發(fā)送請求细溅,向服務(wù)器推送自己正在實時直播的內(nèi)容,而這些內(nèi)容在推送到服務(wù)器的這一過程中是以 “流” 的形式傳遞的儡嘶,這就是“推流”喇聊,把音視頻數(shù)據(jù)以流的方式推送(或上傳)到服務(wù)器的過程就是“推流”!主播方的音視頻往往會很大蹦狂,在推流的過程中首先按照 acc音頻-編碼 和 h264視頻-編碼的內(nèi)部把主播推過來的音視頻壓縮誓篱,然后合并成 MP4或者 FLV格式,然后遵守直播的封裝協(xié)議凯楔,最后傳給服務(wù)器完成推流過程窜骄!
    拉流與推流正好相反,拉流是觀眾從服務(wù)器獲取主播推流給服務(wù)器的音視頻的過程摆屯,這就是“拉流”邻遏!拉流首先acc音頻-解碼 和 h264視頻-解碼的內(nèi)部把主播推過來的音視頻解壓縮,然后合成 MP4或者 FLV 格式虐骑,再解封裝准验,最后到我們的客戶端與觀眾進行交互!

總結(jié)來看廷没,拉流與推流就是因為音視頻太大了糊饱!不方便原封不動的直接“生傳”給服務(wù)器,而且天下主播千千萬每天跟新聞聯(lián)播似的準時準點兒的訪問我的服務(wù)器5呃琛<盟啤!地主家也揭不開鍋罢电汀!1推恕唉铜!服務(wù)器寶寶苦,但是寶寶不說~寶寶直接崩潰B筛堋L读鳌!

  • 3柜去、常見的直播協(xié)議有三種 RTMP灰嫉、HLS、FLV...

    • 1嗓奢、RTMP:real time messaging protocol實時傳輸協(xié)議該協(xié)議功能龐大讼撒,即可以用來推送也可以用于直播,從主播方推流到服務(wù)器會用到這個協(xié)議!RTMP 的端口號為1935根盒;
    • 2钳幅、FLV:adobe 公司出品必屬精品!flash video:體積小炎滞,傳輸速度快敢艰!adobe 主推!
    • 3册赛、HLS:蘋果原生:HTTP Live Streaming钠导,遵循的是 HTTP 超文本傳輸協(xié)議,端口號8080森瘪,是未來的趨勢牡属!
  • 4、常見的點播協(xié)議有三種:MP4柜砾、FLV湃望、HLS:

    • 1、MP4:應(yīng)用廣泛痰驱,App 大都支持证芭,網(wǎng)頁支持也很好,但是內(nèi)部結(jié)構(gòu)復(fù)雜担映,體積較大废士,處理成本較高,在線播放會較慢蝇完;
      -2官硝、FLV:必須要 App 播放,加載進度較慢短蜕;
      -3氢架、蘋果原生,精簡的m3u8的索引結(jié)構(gòu)可以規(guī)避MP4的索引慢問題朋魔,適合點播岖研;
  • 5、Nginx 是一個遵循 HTTP 協(xié)議的服務(wù)器警检!內(nèi)存占用少孙援,并發(fā)能力強!

  • 6扇雕、homebrew是一個 Mac系統(tǒng)下所獨有的套件管理器拓售,我要做直播,需要 rtmp 和 nginx 镶奉,單獨安裝很復(fù)雜础淤,只要在終端里輸入簡單的安裝相應(yīng)的套件命令即可完成安裝崭放,復(fù)雜的過程都靠 homebrew 規(guī)避掉了!
    我用它安裝過很多東西值骇,比如今天的 nginx 搭建服務(wù)器等莹菱。
    常用命令:brew install 、brew uninstall吱瘩、brew search道伟、brew list、brew update使碾、brew help 等~

  • 7蜜徽、FFmpeg是一套用來記錄和轉(zhuǎn)換數(shù)字音視頻,并能將其轉(zhuǎn)化為流的開源計算機程序票摇。拉流和推流離不開 FFmpeg 的幫助拘鞋!

  • 8、RTMP端口號:1935-----HLS:8080矢门;

  • 9盆色、m3u8:是一個播放列表,通過ffmpeg將本地的xxx.mp4進行切片處理祟剔,生成m3u8播放列表(索引文件)和N多個 .ts文件隔躲,并將其(m3u8、N個ts)放置在本地搭建好的webServer服務(wù)器的指定目錄下物延,我就可以得到一個可以實時播放的網(wǎng)址宣旱,我們把這個旺旺號資復(fù)制到 VLA 上可以實時觀看!
    在 HLS 流下叛薯,本地視頻被分割成一個一個的小切片浑吟,一般10秒一個,這些個小切片被 m3u8管理耗溜,并且隨著終端的ffmpeg 向本地拉流的命令而實時更新组力,影片進度隨著拉流的進度而更新,播放過的片段不在本地保存抖拴,自動刪除忿项,直到該文件播放完畢或停止,ts 切片會相應(yīng)的被刪除城舞,流停止,影片不會立即停止寞酿,影片播放會滯后于拉流一段時間家夺,

  • 10、音頻的編解碼器是acc: Advanced Audio Coding伐弹,高級音頻編(解)碼器拉馋;
    視頻的編解碼器是:H264(libx264);

  • 11、在 Mac 上搭建本地服務(wù)器:

    • 1煌茴、安裝 homebrew随闺;
  • 2、執(zhí)行命令:brew tap homebrew/nginx 和 brew -install nginx-full --with-rtmp-module-->安裝nginx蔓腐,并帶有rtmp-module直播流模塊從而完成安裝

  • 3矩乐、進入網(wǎng)址:http://localhost:8080 驗證nginx開啟狀態(tài);如果安裝成功會顯示歡迎來到 nginx回论!哈哈哈~

  • 4散罕、啟動 nginx!在終端執(zhí)行 nginx 命令傀蓉!

  • 5欧漱、配置nginx.conf--->
    添加如下代碼塊:

rtmp {

  server {
        listen 1935;
        chunk_size 4000;

        # RTMP 直播流配置
        application rtmplive {
            live on;
            #為 rtmp 引擎設(shè)置最大連接數(shù)。默認為 off
            max_connections 1024;
        }

        # HLS 直播流配置
        application hls{
            live on;
            hls on;
            hls_path /usr/local/var/www/hls;
            hls_fragment 5s;
        }
       }
      }
location /hls {
            # Serve HLS fragments
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
                }
            root /usr/local/var/www;
            add_header Cache-Control no-cache;
        }
  • 6葬燎、ffmpeg推流至nginx:可以推兩種流:

    • 1误甚、RTMP流,推流至rtmplive谱净;
    • 2窑邦、HLS流,推流至hls岳遥;
  • 7奕翔、補充內(nèi)容:

    • 1、其中浩蓉,HLS流表現(xiàn)較明顯派继,在nginx的臨時目錄下,直觀的可看到m3u8索引文件和N多個.ts文件捻艳。m3u8列表會實時更新驾窟,且會動態(tài)更改當前播放索引切片(.ts)。這種實時更新的機制认轨,不會使得.ts文件長時間存在于Nginx服務(wù)器上绅络,且當推流結(jié)束之后,該目錄下的內(nèi)容會被全部清除嘁字,這樣無形中減緩了nginx服務(wù)器的壓力恩急。另外,也闡釋了HLS這種流媒體播放相較RTMP延時較高的原因纪蜒。
歡迎小伙伴兒們對本篇文章積極討論衷恭,大家相互學(xué)習(xí)!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纯续,一起剝皮案震驚了整個濱河市随珠,隨后出現(xiàn)的幾起案子灭袁,更是在濱河造成了極大的恐慌,老刑警劉巖窗看,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茸歧,死亡現(xiàn)場離奇詭異,居然都是意外死亡显沈,警方通過查閱死者的電腦和手機软瞎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來构罗,“玉大人铜涉,你說我怎么就攤上這事∷爝螅” “怎么了芙代?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盖彭。 經(jīng)常有香客問我纹烹,道長,這世上最難降的妖魔是什么召边? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任铺呵,我火速辦了婚禮,結(jié)果婚禮上隧熙,老公的妹妹穿的比我還像新娘片挂。我一直安慰自己,他們只是感情好贞盯,可當我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布音念。 她就那樣靜靜地躺著,像睡著了一般躏敢。 火紅的嫁衣襯著肌膚如雪闷愤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天件余,我揣著相機與錄音讥脐,去河邊找鬼。 笑死啼器,一個胖子當著我的面吹牛旬渠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播端壳,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼坟漱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了更哄?” 一聲冷哼從身側(cè)響起芋齿,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎成翩,沒想到半個月后觅捆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡麻敌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年栅炒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片术羔。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡赢赊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出级历,到底是詐尸還是另有隱情释移,我是刑警寧澤,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布寥殖,位于F島的核電站玩讳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嚼贡。R本人自食惡果不足惜熏纯,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望粤策。 院中可真熱鬧樟澜,春花似錦、人聲如沸叮盘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熊户。三九已至萍膛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嚷堡,已是汗流浹背蝗罗。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蝌戒,地道東北人串塑。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像北苟,于是被迫代替她去往敵國和親桩匪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,442評論 2 359

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