原创 MP4格式分析

1.先說幾個基本概念   Sample: 採樣,對於音視頻來說就是一個編碼幀;Sample_count即總幀數,Sample_index即幀下標。

原创 X264支持輸入NV12格式

X264支持輸入NV12格式 一般編碼器(例如JM)輸入格式是YUV420(YV12),H.264標準也介紹的是YUV420的輸入。X264編碼器的

原创 MPEG-2系統複用 2

TS與PS的區別 TS流與PS流的區別在於TS流的包結構是固定長度的(188、192、204、208字節);而PS流的包結構是可變長度,它的一個視頻包可能就是一個視頻幀。TS包較小,增加了很多冗餘的包頭信息,導致它對傳輸誤碼具有較高的抵抗

原创 YUV格式總結

視頻數據總要跟YUV打交道,由於不同公司組織基於對各自產品格式的定義不同,派生出各種各樣不同的YUV格式。 總的來說,YUV從像素組織形式上來分有兩

原创 H.264碼流格式

H.264碼流格式 SODB: String Of Data Bits 原始數據比特流, 熵編碼輸出結果, 以bit爲單位。 RBSP: Raw B

原创 內存分配的四個例子

內存分配的四個例子 原文在是:有關內存的思考題 在這篇基礎上擴展了些知識,以做記錄。 第一個例子: char *GetMemory(char * p) { p = (char *)malloc(100); return

原创 FLV文件結構解析

1. FLV文件格式相對於MP4,簡單很多。    FLV Header(9Bytes) + FLV Body                   

原创 FFmpeg中libstagefright.cpp的認識

FFmpeg/libavcodec目錄中有一個叫做libstagefright.cpp的文件,這個文件一開始以爲是H.264在stagefright上的一個軟實現。後來看了代碼和同事研究過以後覺得是FFmpeg在Android系統上調用S

原创 MPEG-2系統複用 1

先說下複用的結構: 1.  元素,對原始的音視頻數據經過壓縮形成編碼碼流,這些碼流稱爲元素流(Elementary Stream),每個元素都有一個由系統層分配的各自獨有的ID號; 2. 節目,一個節目(program)一般由視頻,音頻(

原创 打包H264碼流到FLV文件

FLV格式非常簡單,頭信息數據量很少,適合網絡傳輸,因此被廣泛的應用。 1. H264 NALU結構     h264 NALU:  0x00 00

原创 x264編碼延時研究

研究了一下x264編碼延時. 方法是加log在x264.c static int encode( x264_param_t *param, cli_

原创 x264改變輸出分辨率的算法

x264改變輸出分辨率的算法 在某些應用場景下,x264的輸入視頻分辨率與接收端輸出的視頻分辨率不同。 例如編碼端攝像頭採集到的YUV數據爲1280x720,而接收端視頻顯示窗口爲640x480。 對於這種場景,一般的處理方式是: 源端:

原创 字節對齊

字節對齊 1. X86結構是小端模式存儲,既數據低位在低存儲地址,數據高位在高存儲地址。例如 short x = 0x3344; 假設x的地址爲 0

原创 x264宏塊模式選擇

x264宏塊模式選擇評價編碼效率有兩個指標:碼率和解碼圖像質量。最好結果是碼率小而質量高,但這基本上是不可能的,碼率和質量一般是反比的關係。因此編碼

原创 X264碼率控制總結1——ABR,CQP,CRF

1.  X264顯式支持的一趟碼率控制方法有:ABR, CQP, CRF. 缺省方法是CRF。這三種方式的優先級是ABR > CQP > CRF. if ( bitrate ) rc_method =