1. 程式人生 > >直播技術學習筆記(一)

直播技術學習筆記(一)

播放器相關技術:

1、開源專案jjdxm_ijkplayer是基於ijkplayer簡單的UI介面; ijkplayer是一個基於 FFmpeg n2.6 的開源 Android/iOS 視訊播放器;
2、虛擬按鍵的隱藏方法: rootView = getLayoutInflater().from(this).inflate(R.layout.activity_calrity,null);setContentView(rootView);/**虛擬按鍵的隱藏方法*/rootView.getViewTreeObserver().addOnGlobalLayoutListener(newViewTreeObserver
.OnGlobalLayoutListener(){
@Overridepublicvoid onGlobalLayout(){//比較Activity根佈局與當前佈局的大小int heightDiff = rootView.getRootView().getHeight()- rootView.getHeight();if(heightDiff >100){//大小超過100時,一般為顯示虛擬鍵盤事件 rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);}else{//大小小於100時,為不顯示虛擬鍵盤或虛擬鍵盤隱藏 rootView.
setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}}}); 3、設定螢幕常亮: PowerManager pm =(PowerManager) getSystemService(Context.POWER_SERVICE);PowerManager.WakeLockakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK,"liveTAG");wakeLock.acquire();//啟用裝置常亮狀態wakeLock.release();//恢復裝置亮度狀態

直播的相關技術

1、直播概念: ①由手機一端作為視訊採集端,採集視訊資訊,通過網路實時傳遞到伺服器,再由伺服器推送到視訊播放端的過程 ②流媒體:採用流式傳輸的方式在Internet播放的媒體格式; 這種播放形式不同於以往的播放形式,採集端以資料包的形式傳送到伺服器,伺服器將資料包推送給播放端; 這樣播放端不需要獲取到完整的視訊檔案,就可以實現對採集端資料的播放任務。 ③直播中採用的檔案傳輸方式就是流媒體檔案傳輸方式 2、視訊編碼的基本原理: ①視訊影象資料有極強的相關性也就是說有大量的冗餘資訊,壓縮技術就是將資料中的冗餘資訊去掉(去除資料之間的相關性) ②壓縮技術包含幀內影象資料壓縮技術幀間影象資料壓縮技術熵編碼壓縮技術 ③視訊壓縮中的每一幀畫面都有相似的地方,在壓縮時只保留與前一幀不同的地方即將訊號中部分感覺不出的分量壓縮掉或“掩蔽掉”即祛除冗餘壓縮. 3、硬編碼和軟編碼
①硬編碼:通過呼叫Android系統自帶的Camera錄製視訊,實際上是呼叫了底層的高清編碼硬體模組也即顯示卡不使用CPU;速度快 ②軟編碼:使用CPU進行編碼如常見C/C++程式碼,一般編譯生成的都是二進位制資料,速度相對較慢。例如使用Android NDK編譯H264生成so庫,編寫jni介面,再使用java呼叫so庫。 ③視訊檔案一般涉及到三個引數:幀率解析度位元速率#幀率每秒顯示的圖片數。影響畫面流暢度,與畫面流暢度成正比:幀率越大,畫面越流暢;幀率越小,畫面越有跳動感。由於人類眼睛的特殊生理結構,如果所看畫面之幀率高於16的時候,就會認為是連貫的,此現象稱之為視覺暫留。並且當幀速達到一定數值後,再增長的話,人眼也不容易察覺到有明顯的流暢度提升了。
#解析度(矩形)圖片的長度和寬度,即圖片的尺寸; #位元速率把每秒顯示的圖片進行壓縮後的資料量。影響體積,與體積成正比:位元速率越大,體積越大;位元速率越小,體積越小。  體積=位元速率×時間 幀率×解析度=壓縮前的每秒資料量(單位應該是若干個位元組) 壓縮比=壓縮前的每秒資料量/位元速率(對於同一個視訊源並採用同一種視訊編碼演算法,則:壓縮比越高,畫面質量越差。) 4、所謂“清晰”,是指畫面十分細膩,沒有馬賽克。並不是解析度越高影象就越清晰。 簡單說:在位元速率一定的情況下,解析度與清晰度成反比關係:解析度越高,影象越不清晰,解析度越低,影象越清晰。 在解析度一定的情況下,位元速率與清晰度成正比關係,位元速率越高,影象越清晰;位元速率越低,影象越不清晰。

5、CDN內容分發網路

CDN的全稱是Content Delivery Network,即內容分發網路: ①其基本思路是儘可能避開網際網路上有可能影響資料傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。 ②通過在網路各處放置節點伺服器所構成的在現有的網際網路基礎之上的一層智慧虛擬網路,CDN系統能夠實時地根據網路流量和各節點的連線、負載狀況以及到使用者的距離和響應時間等綜合資訊將使用者的請求重新導向離使用者最近的服務節點上。 ③其目的是使使用者可就近取得所需內容,解決 Internet網路擁擠的狀況,提高使用者訪問網站的響應速度

6、RTMP實時訊息傳輸協議

RTMP是Real Time Messaging Protocol,即實時訊息傳輸協議 ①該協議基於TCP,是一個協議族,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。 ②RTMP是一種設計用來進行實時資料通訊的網路協議,主要用來在Flash/AIR平臺和支援RTMP協議的流媒體/互動伺服器之間進行音視訊和資料通訊。支 ③持該協議的軟體包括Adobe Media Server/Ultrant Media Server/red5等
④在RTMP協議中信令媒體資料都稱之為Message,在網路中傳輸這些Message,為了區分它們肯定是要加一個Message head;所以RTMP協議也有一個Message head; ⑤還有一個問題因為RTMP協議是基於TCP的,由於TCP的包長度是有限制的(一般來說不超過1500個位元組)而RTMP的Message長度是有可能很大的,像一個視訊幀的包可能會有幾十甚至幾千K,這個問題就必然有一個分片的問題,在RTMP協議中對應的說法就是chunk每一個Message + head都是由一個和多個chunk組成的

7、RTC實時通訊

RTC實時通訊 即 Real-time communications

相關推薦

直播技術學習筆記

播放器相關技術: 1、開源專案jjdxm_ijkplayer是基於ijkplayer簡單的UI介面; ijkplayer是一個基於 FFmpeg n2.6 的開源 Android/iOS 視訊播放器; 2、虛擬按鍵的隱藏方法: rootView = getLay

計算機模擬技術學習筆記

一、數學建模方法 1.建模的基本要求 (1)清晰性:模組化 (2)切題性:與研究目的相關 (3)資料準確、精確 2.建模的原則 (1)構築模組的思想 將系統的描述組織成一系列模組,每個模組代表系統的一個部分,每個部分可以由一個或多個輸入變數組成,同時產生多個輸出變數,系統作為一個整體就可以由不同

JSP技術學習筆記

JSP全稱是Java Server Pages,它和servle技術一樣,都是SUN公司定義的一種用於開發動態web資源的技術。 JSP這門技術的最大的特點在於,寫jsp就像在寫html,但它相比html而言,html只能為使用者提供靜態資料,而Jsp技術允許在頁面中巢狀j

直播技術學習筆記直播協議+流媒體伺服器+音視訊處理+FFmpeg

直播協議 RTMP(Real Time Messaging Protocol) 簡介 Time Messaging Protocol,實時訊息傳送協議 RTMP是Adobe公司為Flash播放器和伺服器之間音訊、視訊和資料傳輸開發的開放協議。 協議:長連線TCP 原理:每

前端技術JQuery學習筆記JQuery文件準備就緒事件、JQuery事件處理、JQuery物件與DOM物件的、JQuery取值

一、JQuery,是一套JavaScript的函式庫(類庫),可以很大程度上簡化js程式碼。所以,利用Jquery對HTML元素的操作更加的便捷。 1、JQuery的核心函式:jQuery()函式,利用這個核心函式可以完成html元素的選取功能

python框架之 Tornado 學習筆記

tornado pythontornado 一個簡單的服務器的例子:首先,我們需要安裝 tornado ,安裝比較簡單: pip install tornado 測試安裝是否成功,可以打開python 終端,輸入: import tornado.https

Scala學習筆記編程基礎

大數據 上一個 extends 移除 condition api arr 調用方法 tab 強烈推薦參考該課程:http://www.runoob.com/scala/scala-tutorial.html 1. Scala概述 1.1. 什麽是Scala Scala

3D Game Programming withDX11 學習筆記 數學知識總結

表示 圖形 http 根據 轉置 元素 material -s com   在圖形學中,數學是不可或缺的一部分,所以本書最開始的部分就是數學知識的復習。在圖形學中,最常用的是矢量和矩陣,所以我根據前面三個章節的數學知識,總結一下數學知識。 一、矢量   數學中的矢量,擁有

系統分析與設計學習筆記

學習 掌握 應該 溝通 基本 最終 表示 對象 毫無 為什麽要學習這門課程?   “擁有一把錘子未必能成為建築師”。 這門課程學習的是面向對象分析和設計的核心技能的重要工具。對於使用面向對象技術和語言來,創建設計良好、健壯且可維護的軟件來說,這門課程所

最大熵學習筆記預備知識

color wrap targe dsm entropy plus 文件 eight 相關鏈接 生活中我們常常聽到人們說“不要把雞蛋放到一個籃子裏”。這樣能夠減少風險。深究一下,這是為什麽呢?事實上,這裏邊包括了所謂的最大熵原理(The Maxim

Nginx模塊之Nginx-Ts-Module學習筆記搶險體驗

學習筆記 體驗 nginx模塊 int images clas tps gin issues 1、通過HTTP接收MPEG-TS2、生產和管理Live HLS 3、按照官方的編譯和配置,當然了我是第一次編譯沒有通過,在作者重新調整下,編譯成功,感謝:@arut https:

jq學習筆記

簡單 ren 當前 一個 text 互斥 元素 如果 property 1 .attr() 與 .removeAttr()方法 - atr()方法用來獲取和設置元素屬性 attr()有4個表達式: attr(傳入屬性名):獲取屬性的值 attr(屬性名, 屬性

Redis學習筆記關於在windows64位環境下的安裝學習使用

客戶端 mas key-value 錯誤 services 再次 基準 alt 類型 前言 由於工作需要,目前我正在學習使用Redis。我當時學習Redis就從網上下載了點資料就開始學習了。入門看的是《REDIS入門指南》,這本書個人覺得很適合新手用來學習接觸。根據書上的引

Memcache 學習筆記----Memcache — Linux部署

工作 apach sch trick 解壓 font ash 一個 鍵值   Memcache 一、Memcache簡介(內容摘自 --百度百科)   memcache是一套分布式的高速緩存系統,由LiveJournal的Brad Fitzpatrick開發,但目前被許多網

HtmlParser學習筆記-- 創建Parser對象

nco 修改 英文 text aid 意思 charset 網頁 第一個 首先 ,介紹下HTMLParser的核心類,org.htmlparser.Parser類,這個類實際完成了對於HTML頁面的分析工作。主要的構造函數如下: public Parser ();

Python 學習筆記

pytho oat 變量 情況 class 弱類型 定義 寫代碼 基本上 為什麽學習Python?因為Python 的用處太多了。 本想學會一們語言就好好的維持下去,但是最近Python太火啦,什麽人工智能、網絡爬蟲的,耳濡目染的,心想多學習一些東西總是好的,於是就抽空學習

thphp5.0學習筆記

mic tel 序號 app clas world char p s 庫類 1.目錄結構: 其中thinkphp子目錄是框架核心目錄 thinkphp結構: 2.入口文件 默認自帶的入口文件位於public/index.php 應用目錄為application,其結構

Unity Shader學習筆記坐標變換

directx 渲染 系列 約束 shade ace cnblogs 相機 它的 基本問題   試想我們的美術做了一個3D模型,然後渲染引擎把模型渲染到屏幕上。我們還可以選定不同的視角,模擬不同的光照條件去觀察模型。現在來分析一下這個過程。如果說我們把這個過程看成一個函數,

Django學習筆記——安裝,創建項目,配置

lvs csv oot url root import 方式 配置文件 函數 瘋狂的暑假學習之 Django學習筆記(一) 教材 書《The Django Book》 視頻:csvt Django視頻 1.創建項目

ELK學習筆記安裝Elasticsearch、Kibana、Logstash和X-Pack

成功 前端 功能 靈活 日誌分析 傳統 開發人員 收集 還在 最近在學習ELK的時候踩了不少的坑,特此寫個筆記記錄下學習過程。 日誌主要包括系統日誌、應用程序日誌和安全日誌。系統運維和開發人員可以通過日誌了解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日