1、FFMpeg

FFMpeg編譯
  • Step1
    先下載文件:https://github.com/libav/gas-preprocessor,
    復(fù)制gas-preprocessor.pl到/usr/bin下,
    Q1 無權(quán)限
    A1 屏蔽方法:重啟Mac,按住command+R,進(jìn)入recovery模式。選擇打開Utilities下的終端,輸入:csrutil disable并回車,然后正常重啟Mac即可
  • Step2
    修改權(quán)限,需要終端在user/bin目錄下
    sudo chmod a+rwx gas-preprocessor.pl
  • Step3
    安裝Yasm http://www.tortall.net/projects/yasm/releases/
    解壓之后,在命令行中
    cd yasm-1.2.0
    ./configure
    make
    sudo make install
  • Step4 下載
    **FFmpeg-iOS-build-script **https://github.com/kewlbear/FFmpeg-iOS-build-script
  • Step4.2 下載ffmpeg的源碼
    放入ffmpeg-ios-build-script目錄中
  • Step5 編譯
    FFmpeg-iOS-build-script-master runo$ ./build-ffmpeg.sh
  • Step6
    編譯完成后取出相關(guān)的靜態(tài)包和頭文件導(dǎo)入工程中
  • Step7 修改appdelegate.m為 .mm
    導(dǎo)入系統(tǒng)庫
    libz.dylib,libbz2.dylib,libiconv.dylib
  • Step8 在viewcontroller導(dǎo)入#include “avformat.h”,添加一句av_register_all();
    Q 編譯的時候報錯: 'libavcodec/avcodec.h' file not found ,
    A 修改Header search paths 里的路徑: $(PROJECT_DIR)/FFmpeg-iOS/include
    注意文件存放的位置
    Q 出現(xiàn)
    Undefined symbols for architecture x86_64:
    "_CMBlockBufferCreateWithMemoryBlock", referenced from:
    _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o)
    A 接著導(dǎo)入coreVideo.framework coreMdedia.framework VideoToolbox.framework
FFmpeg
  • ffmpeg是一個編解碼框架,能夠支持各種不同的編解碼器,并采用統(tǒng)一的 api 去調(diào)用。但其默認(rèn)只提供了針對各種媒體格式的解碼器(基本上涵蓋得比較全了),而編碼器默認(rèn)提供很少的幾個開源的格式(或者已經(jīng)無需專利保護(hù)的格式)。所以,如果你需要 FFmpeg 具備支持多種媒體格式的編碼能力,你需要額外下載并安裝那些編碼器(主要是通過安裝這些編碼器獲得它們的頭文件、動態(tài)庫及靜態(tài)庫用于 FFmpeg 編譯),才能保證在 FFmpeg 編譯時載入這些編碼器的二進(jìn)制代碼,使 FFmpeg 具備這些編碼功能。
  • 流媒體:在網(wǎng)絡(luò)上基于流式傳輸,可以立即解碼播放流式傳輸定義很廣泛,主要指通過網(wǎng)絡(luò)傳送媒體(如視頻、音頻)的技術(shù)總稱。其特定含義為通過Internet 將影視節(jié)目傳送到PC機(jī)。實(shí)現(xiàn)流式傳輸有兩種方法
    • 實(shí)時流式傳輸(Real time streaming)實(shí)時流式傳輸指保證媒體信號帶寬與網(wǎng)絡(luò)連接匹配,使媒體可被實(shí)時觀看到。實(shí)時流式傳輸根據(jù)網(wǎng)絡(luò)情況調(diào)整輸出音視頻的質(zhì)量從而實(shí)現(xiàn)媒體的持續(xù)的實(shí)時傳送,用戶可快進(jìn)或后退以觀看前面或后面的內(nèi)容。RTSP,需要專門的流媒體服務(wù)器,和傳輸協(xié)議
    • 順序流式傳輸(progressive streaming)順序流式傳輸是順序下載,在下載文件的同時用戶可觀看在線媒體,在給定時刻,用戶只能觀看已下載的那部分,而不能跳到還未下載的前頭部分,在傳輸期間不根據(jù)用戶連接的速度對下載順序做調(diào)整。
  • RTSP :命令和數(shù)據(jù)分離管道
  • RTMP:命令和數(shù)據(jù)公用同一管道
  • MPEG:一種編碼標(biāo)準(zhǔn),mpeg并不是對每格視頻進(jìn)行壓縮,而是以秒為單位,將時段內(nèi)的每一格視頻做比較,由于一般視頻內(nèi)容都是背景變化小,主體變化大,mpeg技術(shù)就是應(yīng)用于這個特點(diǎn),以一幅視頻為主圖,其余視頻格只是記錄參考資料及變化數(shù)據(jù),更有效記錄動態(tài)視頻。
    MPEG只規(guī)定比特流的格式與解碼精確度(即規(guī)定解碼的方法),而任何人可依照MPEG標(biāo)準(zhǔn)以不同方式實(shí)現(xiàn)編碼器(程序)。除了可減少因編碼專利造成的商業(yè)利益糾紛外,MPEG標(biāo)準(zhǔn)的主要目的在于確保不同的編碼器所產(chǎn)生的比特流可被其他解碼器正確的解碼,只要此比特流匹配標(biāo)準(zhǔn)。
  • 編碼格式表


    image.png
  • 像素(pixel):視頻顯示的最小單位
  • 分辨率:是屏幕圖像的精密度,是指顯示器所能顯示的所有像素有多少。
    • 顯示分辨率:顯示屏能顯示的像素,顯示分辨率一定的情況下,顯示屏越小圖像越清晰,反之,顯示屏大小固定時,顯示分辨率越高圖像越清晰。
    • 視頻分辨率:視頻的像素
      例如:1080P,意思是1920 x 1080的視頻
  • 轉(zhuǎn)碼率:完整視頻通過壓縮算法壓縮時,壓縮比例越大,還原后的失真越大,因?yàn)閴嚎s過程中不可避免的丟失了視頻中原來的圖像數(shù)據(jù)信息,碼率(bps(bit per second))就是在壓縮視頻的時候指定一個參數(shù),告訴壓縮軟件,期望壓縮后的視頻的大小,平均每秒多少個比特位。
    • 例如:100分鐘 1GB的視頻,
      100min = 100 * 60 = 6000s
      1GB=1024MB=10241024KB = 102410241024Byte = 1024102410248bit = 8589934592bit
      那么這個視頻的碼率就是 1.4Mbit/s (8589934593/6000) = 1431655 bit/s
  • 視頻格式:是指用什么樣的方式把視頻和音頻數(shù)據(jù)打包成一個文件。


    image.png
  • 視頻播放流程:


    image.png
    • 解協(xié)議:是指播放網(wǎng)絡(luò)視頻的時候協(xié)議網(wǎng)絡(luò)協(xié)議:如HTTP,RTMP等,就是將流媒體協(xié)議的數(shù)據(jù),解析為標(biāo)準(zhǔn)的相應(yīng)的封裝格式數(shù)據(jù)。
    • 解封裝:就是將輸入的封裝格式的數(shù)據(jù)分離成音頻流壓縮編碼數(shù)據(jù)和視頻流壓縮編碼數(shù)據(jù)。demux
    • 解碼:將音/視頻壓縮編碼數(shù)據(jù),解碼成非壓縮的原始數(shù)據(jù),decode
    • 視頻音頻同步:接封裝中得到的參數(shù)信息,同步解碼出來的音/視頻數(shù)據(jù),getframe
  • 幀率:就是fps(frame per second)每秒更新的次數(shù)
  • YUV:是圖像的編碼格式,Y是亮度 UV是色彩飽和度
    • YUV444: 每四個Y采樣就采樣四個UV 總字節(jié)大?。篽eightwidth3
    • YUV420:每四個Y采樣就采樣一個UV 總字節(jié)大?。篽eightwidth(1/4+1/4+2/2)相當(dāng)于(u:v:y)
    • YUV422:每兩個Y采樣就采樣一個UV 總字節(jié)大小:heightwidth(1/2+1/2+2/2)
      image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容