FFmpeg總結(十三)用ffmpeg基於nginx實現直播功能,不用第三方SDK,自研推流拉流

碼農突圍發表於2017-05-14

請尊重分享成果,轉載請註明出處,本文來自逆流的魚yuiop,原文連結:
http://blog.csdn.net/hejjunlin/article/details/71976574

直播app實現流程

  • 1.採集
  • 2.濾鏡處理
  • 3.編碼
  • 4.推流
  • 5.CDN分發
  • 6.拉流
  • 7.解碼
  • 8.播放
  • 9.聊天互動

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

影像格式:

    public static final int DEPTH16 = 1144402265;
    public static final int DEPTH_POINT_CLOUD = 257;
    public static final int FLEX_RGBA_8888 = 42;
    public static final int FLEX_RGB_888 = 41;
    public static final int JPEG = 256;
    public static final int NV16 = 16;
    public static final int NV21 = 17;
    public static final int PRIVATE = 34;
    public static final int RAW10 = 37;
    public static final int RAW12 = 38;
    public static final int RAW_PRIVATE = 36;
    public static final int RAW_SENSOR = 32;
    public static final int RGB_565 = 4;
    public static final int UNKNOWN = 0;
    public static final int YUV_420_888 = 35;
    public static final int YUV_422_888 = 39;
    public static final int YUV_444_888 = 40;
    public static final int YUY2 = 20;
    public static final int YV12 = 842094169;

直播app架構:

這裡寫圖片描述

專案結構:(不用第三方推流SDK,自研推流,封包,解包過程。)

這裡寫圖片描述

手機推流直播:

這裡寫圖片描述

其他客戶端拉流播放:
這裡用vlc,及ijkplayer進行拉流,效果如下:

這裡寫圖片描述

生成標頭檔案:
這裡寫圖片描述

ndk編譯so檔案:(yuiopLiveFFmpeg,為什麼加yuiopLive,因為我的網名id叫:逆流的魚yuiop)本文來自逆流的魚yuiop,原文連結:
http://blog.csdn.net/hejjunlin/article/details/71976574

這裡寫圖片描述

genymotion先測試訪問nginx伺服器:

這裡寫圖片描述

為什麼是192.168.56.1,而不是10.0.2.2(android自帶模擬器),因為genymotion是基於VirtualBox上執行的。它的宿主就是VirtualBox。

這裡寫圖片描述

第一時間獲得部落格更新提醒,以及更多android乾貨,原始碼分析,歡迎關注我的微信公眾號,掃一掃下方二維碼或者長按識別二維碼,即可關注。

這裡寫圖片描述
如果你覺得好,隨手點贊,也是對筆者的肯定,也可以分享此公眾號給你更多的人,原創不易

相關文章