1. 程式人生 > >從零開始學習音視訊程式設計技術(一) 視訊格式講解

從零開始學習音視訊程式設計技術(一) 視訊格式講解

所謂視訊,其實就是將一張一張的圖片連續的放出來,就像放幻燈片一樣,由於人眼的惰性,因此只要圖片的數量足夠多,就會覺得是連續的動作。 所以,只需要將一張一張的圖片儲存下來,這樣就可以構成一個視訊了。 

    但是,由於目前網路和儲存空間的限制,直接儲存圖片顯然不可行。舉個例子:在視訊聊天中,假定從攝像頭採集的圖片每張大小200KB,每秒鐘傳送大概15幀圖片,這樣每秒鐘需要的流量就需要3M(意味著需要24M的寬頻),顯然這個要求太高了。 

    於是,就可以考慮將這些圖片壓縮來減少大小。並且視訊基本上都是連續的兩幀影象差別不是太大。因此,在記錄下第一張完整的影象之後以後的每張影象都是隻記錄下和上一幀影象不一樣的地方,直到出現了差別很大的影象,才重新記錄一幀完整的影象(這個完整的影象就叫做關鍵幀

)。這樣就可以很大程度上減小空間了。

    上面提到的壓縮專業術語叫做視訊編碼目前主流的編碼格式有國際電聯的H.261、H.263、H.264、H.265,運動靜止影象專家組的M-JPEG國際標準化組織運動影象專家組的MPEG系列標準,此外在網際網路上被廣泛應用的還有Real-Networks的RealVideo、微軟公司的WMV以及Apple公司的QuickTime等。 

    編碼格式這麼多,我們應該選擇哪種呢? 經過查閱資料目前比較好的選擇是H.264,因此,只需要瞭解H.264就行,我們後續的專案也是全部使用H.264。H.264的細節不是三兩下能說清楚的,本文不做解釋(留著以後再說),這裡就介紹下H.264有哪些優勢:


1.低位元速率(Low Bit Rate):和MPEG2和MPEG4 ASP等壓縮技術相比,在同等影象質量下,採用H.264技術壓縮後的資料量只有MPEG2的1/8,MPEG4的1/3。

2.高質量的影象:H.264能提供連續、流暢的高質量影象(DVD質量)。

3.容錯能力強:H.264提供瞭解決在不穩定網路環境下容易發生的丟包等錯誤的必要工具。

4.網路適應性強:H.264提供了網路抽象層(Network Abstraction Layer),使得H.264的檔案能容易地在不同網路上傳輸(例如網際網路,CDMA,GPRS,WCDMA,CDMA2000等)。

5.高壓縮率,H.264的壓縮比達到驚人的102∶1。

H.264最大的優勢是具有很高的資料壓縮比率,在同等影象質量的條件下,H.264的壓縮比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。舉個例子,原始檔案的大小如果為88GB,採用MPEG-2壓縮標準壓縮後變成3.5GB,壓縮比為25∶1,而採用H.264壓縮標準壓縮後變為879MB,從88GB到879MB,H.264的壓縮比達到驚人的102∶1。低位元速率(Low Bit Rate)對H.264的高的壓縮比起到了重要的作用,和MPEG-2和MPEG-4 ASP等壓縮技術相比,H.264壓縮技術將大大節省使用者的下載時間和資料流量收費。尤其值得一提的是,H.264在具有高壓縮比的同時還擁有高質量流暢的影象,正因為如此,經過H.264壓縮的視訊資料,在網路傳輸過程中所需要的頻寬更少,也更加經濟。

相關推薦

開始學習視訊程式設計技術 視訊格式講解學習筆記

/*  該型別部落格為學習時載錄筆記,加上自己對一些不理解部分自己的理解。會涉及其他博主的博文的摘錄,會標註出處  */ ==========================================================================

開始學習視訊程式設計技術 音訊格式講解

1. 音訊簡介     前面我們說過視訊有一個每秒鐘採集多少張的概念,這就叫做視訊的幀率。     和視訊的幀率一樣的道理,聲音也有一個頻率,叫做取樣率。   人對頻率的識別範圍是 20HZ - 20000HZ, 如果每秒鐘能對聲音做 20000 個取樣, 回放

開始學習視訊程式設計技術 視訊格式講解

所謂視訊,其實就是將一張一張的圖片連續的放出來,就像放幻燈片一樣,由於人眼的惰性,因此只要圖片的數量足夠多,就會覺得是連續的動作。 所以,只需要將一張一張的圖片儲存下來,這樣就可以構成一個視訊了。      但是,由於目前網路和儲存空間的限制,直接儲存圖片顯然不可行。

【轉】開始學習視訊程式設計技術 音訊格式講解

轉自:http://blog.yundiantech.com/?log=blog&id=5 1. 音訊簡介     前面我們說過視訊有一個每秒鐘採集多少張的概念,這就叫做視訊的幀率。     和視訊的幀率一樣的道理,聲音也有一個頻率,叫做取樣率。   

【轉】開始學習視訊程式設計技術 視訊格式講解

轉自:http://blog.yundiantech.com/?log=blog&id=4  所謂視訊,其實就是將一張一張的圖片連續的放出來,就像放幻燈片一樣,由於人眼的惰性,因此只要圖片的數量足夠多,就會覺得是連續的動作。 所以,只需要將一張一張的圖片儲存下來

開始學習比特幣開發-P2P網路建立流程之生成地址對並連線到指定地址

本節繼續講解比特幣P2P網路建立流程,這節講解的執行緒為’ThreadOpenAddedConnections’,它的作用是生成地址對並連線到指定地址。 本文可以結合比特幣系統啟動的的第12步的講解來看,可以更加系統的瞭解比特幣系統啟動的過程。 P2P 網路的建立是在比特幣系統啟動的第

開始學習比特幣開發--網路初始化,載入區塊鏈和錢包,匯入區塊啟動節點

寫在前面: 本篇文章接續 從零開始學習區塊鏈技術(三)-接入比特幣網路的關鍵步驟解析、建立比特幣錢包,以及重要rpc指令 從零開始學習區塊鏈技術(二)–如何接入比特幣網路以及其原理分析 以及從零開始學習區塊鏈技術(一)–從原始碼編譯比特幣 如果這篇文章看不明白,請務必先閱讀之前的文章

開始學習微信小程式

wx.navigateTo()與wx.redirectTo()的區別 區別一 wx.navigateTo()表示的是從一個頁面跳轉到另一個頁面,會在另一個頁面中出現可返回之前頁面的按鈕,另一個頁面與之前頁面的關係為子頁面與父頁面的關係 wx.redirectTo()表示

開始學習比特幣開發--P2P 網路建立之訊息處理中篇

P2P 網路的建立是在系統啟動的第 12 步,最後時刻呼叫 CConnman::Start 方法開始的。 恭喜你越來越接近比特幣的核心了,在上篇中,我們主要講解了比特幣的訊息處理執行緒,接下來,在下篇中,將以具體的比特幣訊息即比特幣協義分析為主。針對比特幣的協義

轉載:高德地圖API學習 開始學高德JS API地圖展現

摘要:關於地圖的顯示,我想大家最關心的就是麻點圖,自定義底圖的解決方案了吧。在過去,marker大於500之後,瀏覽器開始逐漸卡死,大家都開始尋找解決方案,比如聚合marker啊,比如麻點圖啊。聚合marker裡面還有一些複雜的演算法,而麻點圖,最讓大家頭疼的,就是如何生成麻點圖,如何切圖,如何把圖片貼到地圖

開始造一個Markdown編輯器

實時 需要 自己實現 自己 背景 學習正則表達式 tex ID img 背景 最近學習正則表達式,於是要挑一個練手項目,恰好對markdown編輯器十分感興趣,於是就進行了一些常識。做了一個簡單的markdown解析器和編輯器。 網頁端的地址(不支持文件的操作): http

Windows環境下,開始搭建Nodejs+Express+Ejs框架---安裝nodejs

直接 分享圖片 完成 info pre download png 安裝包 get 第一步,安裝nodejs https://nodejs.org/en/download/ 這個是nodejs的官網,由於操作系統是win7 64位的,所以,我下載的是node-v8.11.1-

開始搭建 gRPC 服務 - Golang 篇

gRPC:一個高效能、開源的通用 RPC 框架,基於標準的 HTTP/2 進行傳輸,預設採用 Protocol Buffers 序列化結構化資料。本文將介紹如何從零搭建一個 Golang 的 gRPC 服務。 準備工作 本文所述的搭建環境基於滴滴雲提供的 CentOS 7.2 標準映

開始用 Flask 搭建一個網站

前言 筆者之前未接觸過 Python,只是略懂一點前端,所以說從零開始也相差無幾吧。Flask 是一個輕量級的基於 Python 的框架,但是擴充套件性非常良好(Github 上 22000 多個 star 就知道群眾的選擇不無道理),其他的這裡就不多提了,下

開始搭建一個簡易的伺服器

前言 其實大家大可不必被伺服器這三個字嚇到,一個入門級後端框架,所需的僅僅是HTTP相關的知識與應用這些知識的程式設計工具。據本人的經驗,絕大多數人擁有搭建後端所涉及到的基礎理論知識,但是缺乏能將之應用出去的工具,而本文即是交給讀者這樣一個工具,並能夠運用之來

開始搭建一個主流專案框架—簡單的框架

個人部落格:haichenyi.com。感謝關注 目的   首先先說出,最終的目的是現在主流的MVP+RxJava+Retrofit+OkHttp框架。讓大家心裡有底   開發工具Android Studio3.0,還在用eclipse的同鞋,強烈推薦

開始學 Web 之 JavaScript 高階原型,貪吃蛇案例

一、複習 例項物件和建構函式之間的關係: 1、例項物件是通過建構函式來建立的,建立的過程叫例項化。 2、如何判斷一個物件是不是某種資料型別? 通過構造器的方法。例項物件.constructor === 建構函式名字 (推薦使用)例項物件 instanceof 建構函式名字 二、原型 1、原型的引入 由

開始學 Web 之 移動Web螢幕相關基本知識,除錯,視口,螢幕適配

一、基礎知識 1、螢幕 移動裝置與PC裝置最大的差異在於螢幕,這主要體現在螢幕尺寸和螢幕解析度兩個方面。 通常我們所指的螢幕尺寸,實際上指的是螢幕對角線的長度(一般用英寸來度量)。 而解析度則一般用畫素來度量 px,表示螢幕水平和垂直方向的畫素數,例如 1920*1080 指的是螢幕垂直方向和水平方向分別

開始學 Web 之 Vue.jsVue.js概述,基本結構,指令,事件修飾符,樣式

大家好,這裡是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 部落格園:http://www.cnblogs.com/lvonve/ CSDN:https://blog.csdn.net/lvonve/

開始佈置你的個人網站

準備 之前用騰訊雲的學生購買了一個1元伺服器,但是一直沒有用起來,最近專案不太忙,準備自己搭建一個線上環境。 安裝ubuntu環境 安裝ubuntu的16.04.1的32環境 登入ubuntu系統,可以直接使用騰訊雲的登入,也可以通過各種