原创 一個完整直播app功能分析

1.一個完整直播app功能 1、聊天 私聊、聊天室、點亮、推送、黑名單等; 2、禮物 普通禮物、豪華禮物、紅包、排行榜、第三方充值、內購、禮物動態更新、提現等; 3、直播列表 關注、熱門、最新、分類直播用戶列表等; 4、自己直播 錄製、

原创 FLV封裝格式解析

原理 FLV封裝格式是由一個FLV Header文件頭和一個一個的Tag組成的。Tag中包含了音頻數據以及視頻數據。FLV的結構如下圖所示。 有關FLV的格式本文不再做記錄。可以參考文章《視音頻編解碼學習工程:FLV封裝格式

原创 PCM音頻採樣數據編碼爲AAC的壓縮編碼數據

本文介紹一個最簡單的基於FFMPEG的音頻編碼器。該編碼器實現了PCM音頻採樣數據編碼爲AAC的壓縮編碼數據。編碼器代碼十分簡單,但是每一行代碼都很重要。通過看本編碼器的源代碼,可以瞭解FFMPEG音頻編碼的流程。 下面附一張使用

原创 AVFrame

述,其中AVFrame是包含碼流參數較多的結構體。本文將會詳細分析一下該結構體裏主要變量的含義和作用。 * Audio Video Frame.   * New fields can be added to the

原创 AVFormatContext

在此不再詳述,其中AVFormatContext是包含碼流參數較多的結構體。本文將會詳細分析一下該結構體裏每個變量的含義和作用。  * Format I/O context.   * New fields can be add

原创 H.264:i幀,p幀,b幀

i幀:幀內編碼幀,i幀表示關鍵幀,它保留了一副畫面完整的數據信息,解碼的時候只需要這歸真數據就可以完成(因爲i幀裏面包含了花面狸免得所有信息)。 i幀的特點: 1:它是一個全幀壓縮編碼幀,它將全幀圖像信息進行JPEG壓縮編碼以及

原创 FFMPEG中結構體

FFMPEG中結構體很多。最關鍵的結構體可以分成以下幾類: 解協議(http,rtsp,rtmp,mms) AVIOContext,URLProtocol,URLContext主要存儲視音頻使用的協議的類型以及狀態。URLProtocol

原创 AVCodec

在此不再詳述,其中AVCodec是存儲編解碼器信息的結構體。本文將會詳細分析一下該結構體裏每個變量的含義和作用。 typedef struct AVCodec {       /**       * Name of the cod

原创 AVStream

在此不再詳述,其中AVStream是存儲每一個視頻/音頻流信息的結構體。本文將會分析一下該結構體裏重要變量的含義和作用。 * Stream structure.   * New fields can be added 

原创 SPS和PPS

SPS和PPS串,包含了初始化H.264解碼器所需要的信息參數,包括編碼所用的profile,level,圖像的寬和高,deblock濾波器等。SP

原创 AVIOContext

在此不再詳述,其中AVIOContext是FFMPEG管理輸入輸出數據的結構體。本文將會詳細分析一下該結構體裏每個變量的含義和作用。 * Bytestream IO Context.   * New fields can 

原创 H.264壓縮

H.264的壓縮方法: 1.分組:把幾幀圖像分爲一組(GOP,也就是一個序列),爲防止運動變化,幀數不宜取多。 2.定義幀:將每組內各幀圖像定義爲三種類型,即I幀、B幀和P幀; 3.預測幀:以I幀做爲基礎幀,以I幀預測P幀,再由I幀和P幀

原创 H.264 NAL頭解析

H.264 NAL頭解析 如果NALU對應的Slice爲一幀的開始,則用4字節表示,即0x00000001;否則用3字節表示,0x000001。 NAL Header:forbidden_bit,nal_reference_bit(優先級

原创 將視頻 YUV 格式編碼成 H264

首先開始的時候我們插入一張雷神大大的圖幫助大家理解一下我們今天的操作究竟屬於那一步。 音視頻格式封裝層次 從上圖可以看出我們要做的,就是將像素層的 YUV 格式,編碼出編碼層的 h264數據。 前面講到我們已經成功編譯出 iOS 中可

原创 AVPacket

在此不再詳述,其中AVPacket是存儲壓縮編碼數據相關信息的結構體。本文將會詳細分析一下該結構體裏重要變量的含義和作用。 typedef struct AVPacket {       /**       * Presentati