視頻開發知識儲備

1,rtp實時傳輸協議,用于傳輸流媒體數據,基于udp.
2,rtsp實時流媒體協議,用于發起流媒體會話,交互信息,基于tcp.
3,http這個比較雜,通過http進行流化視頻有很多種方法.

具體有http漸進式下載,http live streaming,http dynamic streaming.HTML5.
具體不同的平臺,不同的播放器,瀏覽器,這個都可能有些小區別.
國內最為常見是flash+http漸進下載.adobe最近推出的HTTP dynamic streaming是后續版本.

視頻實質:
純粹的視頻(不包括音頻)實質上就是一組幀圖片,經過視頻編碼成為視頻(video)文件再把音頻(audio)文件有些還有字幕文件組裝在一起成為我們看到的視頻(movie)文件。1秒內出現的圖片數就是幀率,圖片間隔越小畫面就越流暢,所以幀率越高效果就越好,需要的存儲空間也就越多。

視頻編碼:
因為不進行編碼的視頻數據量非常大,會造成存儲和傳輸上的困難,所以視頻文件都需要在錄制完成后進行編碼。視頻編碼主要從兩個維度壓縮數據。
1、單張圖像某一區域相鄰像素相似,比如一片紅色只記錄紅色色值和區域,不用記錄這個區域的每一個像素點。
2、相鄰圖像之間內容相似,因為相鄰兩幀要制造連續的效果,所以兩幀之間的內容一般非常接近。目前主流的視頻編碼技術都是用圖像編碼方法對第一幀進行編碼,然后用某種方式描述接下來的幀相對于附近的幀有什么區別。

視頻格式:
MP4、MOV、AVI、RMVB這些播放格式其實都是封裝格式,除了RMVB比較特殊外,其他格式內封裝的視頻編碼格式都是H264,H264以高壓縮率聞名于世,壓縮效率比MEPG-2提升一倍多,但是世上沒有兩全其美的事,H264的解碼難度提高了3倍多。

視頻碼率:
視頻文件的大小除以是視頻的時長定義為碼率。

碼率和分辨率跟視頻質量的關系:
碼率可以理解為取樣率,單位時間內取樣率越大,精度就越高,同時體積也越大。
當視頻沒有經過編碼時,如果分辨率越高,那么視頻圖像的細節越清晰。
但如果視頻經過編碼,被限制在一定碼率內,編碼器就必須舍棄掉一部分細節。
所以分辨率和碼率都同清晰度有關。

軟解碼和硬解碼:
對H264的視頻解碼給CPU造成了很大負擔,所以手機工程師把這部分工作交給了更善于進行處理簡單工作但是數據量較大的GPU。
GPU解碼就是所謂的硬解碼
CPU解碼就是軟解碼。
iOS提供的播放器類使用的是硬解碼,所以視頻播放對CPU不會有很大的壓力,但是支持的播放格式比較單一,一般就是MP4、MOV、M4V這幾個。

對于iOS,則使用蘋果的HLS(http live streaming)支持.

HTTP Live Streaming
HLS簡介
HTTP Live Streaming(縮寫是 HLS)是一個由蘋果公司提出的基于HTTP的流媒體網絡傳輸協議。它的工作原理是把整個流分成一個個小的基于HTTP的文件來下載,每次只下載一些。當媒體流正在播放時,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應不同的數據速率。支持的視頻流編碼為H.264。我們在視頻網站上看到的M3U8后綴的播放鏈接就是使用HLS協議的視頻。
HLS優點
1、看完一段緩存一段,防止只看一段視頻但是把整個視頻文件都緩存下來的用戶,減少服務器壓力和節省流量。
2、根據用戶網速切換不同的碼率,兼顧流程性和清晰度。

HLS支持情況
iOS 3.0及之后的版本
Android 3.0及之后的版本
HTML5。

終端播放格式的選取
Android由于3.0之后才支持HLS,所以Android2.3只能用MP4。
Android3.0及之后支持HLS。可以用m3u8、mp4格式
iOS支持HLS,但不支持flash。可以用m3u8、mp4格式
支持HTML5的瀏覽器 可以用m3u8。
不支持HTML5的瀏覽器只能用flash播放swf。

由于以上原因,目前無法實現一個播放地址在所有的平臺都通用。
iOS視頻播放:
iOS提供MPMoviePlayerController類進行播放,支持流媒體和文件播放。視頻內容會渲染到他的View上,可以放在你想放的任何地方,用起來比較方便。這個類設計上不合理的是視頻播放狀態和視頻加載狀態都是通過Notification通知的,而不是通過block或者delegate。
iOS視頻錄制:
同拍照一樣視頻錄制功能有兩種實現方式
1、UIImagePickerViewController
2、AVFoundation。

這里只討論AVFoundation框架,這個框架是蘋果提供的底層多媒體框架,用于音視頻采集、音視頻解碼、視頻編輯等,多媒體基本上都依賴AVFoundation框架。
視頻錄制和拍照需要做的工作差不多,主要有以下5步:
1、創建會話AVCaptureSession,用于控制input到output的流向。
2、獲取設備AVCaptureDevice,攝像頭用于視頻采集,話筒用于音頻采集。
3、創建輸入設備AVCaptureDeviceInput,將設備綁定到input口中,并添加到session上
4、創建輸出AVCaptureOutput,可以輸出到文件和屏幕上。 AVCaptureMovieFileOutput 輸出一個電影文件 AVCaptureVideoDataOutput 輸出處理視頻幀,用于顯示正在錄制的視頻 AVCaptureAudioDataOutput 輸出音頻數據
5、音視頻合成到一個文件中

iOS對視頻實時處理:
如果需要對視頻進行實時處理(當然需要否則看不到正在錄制的內容),則需要直接對相機緩沖區(camera buffer)中的視頻流進行處理。
1、定義一個視頻數據輸出(AVCaptureVideoDataOutput), 并將其添加到session上。
2、設置接受的controller作為視頻數據輸出緩沖區(sample buffer)的代理。
3、實現代理方法 -(void)captureOutput:(AVCaptureOutput )captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection)connection 當數據緩沖區(data buffer)一有數據時,AVFoundation就調用該方法。在該代理方法中,我們可以獲取視頻幀、處理視頻幀、顯示視頻幀。實時濾鏡就是在這里進行處理的。在這個方法中將緩沖區中的視頻數據(就是幀圖片)輸出到要顯示的layer上。

HLS不支持RTSP,但是可以在服務器用ffmpeg將RTSP流轉成HLS格式。生成m3u8和視頻文件。命令如下:

ffmpeg -i SDP.sdp -vcodec copy -map 0 -f segment -segment_list foo.m3u8 -segment_list_flags +live -segment_time 10 out%03d.ts

看完以上這些,再看看這個鏈接,寫的不錯http://blog.csdn.net/woaifen3344/article/details/40837803

資源來源于百度和作者[萌小殤7553]、http://www.cnblogs.com/zy1987/p/4520118.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容