Android——直播推流SDK

概述:

好像有三個(gè)月沒(méi)有更新博客了,年前實(shí)在是忙的累成狗啊。。。本想直播功能穩(wěn)定了就沒(méi)那么多事了,沒(méi)想到又要搞魔法短視頻功能,馬丹,短視頻玩成了花啊,擼起袖子干。
現(xiàn)在把我們項(xiàng)目中的直播SDK開(kāi)源出來(lái),我們是境外直播平臺(tái),百萬(wàn)用戶,經(jīng)過(guò)半年迭代,SDK已經(jīng)相當(dāng)穩(wěn)定,大家可以放心使用。https://github.com/WangShuo1143368701/WSLiveDemo
這個(gè)sdk是我根據(jù)這個(gè)librestreaming修修改改出來(lái)的,由于改了太多的代碼,用法已經(jīng)不一樣了。

之前寫(xiě)過(guò)一篇ffmpeg實(shí)戰(zhàn)教程(十一)手把手教你實(shí)現(xiàn)直播功能,不依賴第三方SDK
是用ffmpeg實(shí)現(xiàn)的推流,但是在實(shí)際移動(dòng)端直播項(xiàng)目中,推流是不適合用ffmpeg的。

特性:

支持視頻錄制和推流,錄制視頻推流可以同時(shí)進(jìn)行
支持推流過(guò)程中實(shí)時(shí)截幀功能
支持推流過(guò)程中實(shí)時(shí)鏡像功能,不會(huì)打斷推流
支持設(shè)置關(guān)鍵幀間隔gop
支持動(dòng)態(tài)設(shè)置碼率,幀率
支持分開(kāi)設(shè)置預(yù)覽分辨率,編碼的分辨率
支持gpu濾鏡,并可以通過(guò)opengles繪制圖像紋理來(lái)自定義濾鏡。
支持設(shè)fbo濾鏡組。
支持前后攝像頭快速切換,不會(huì)打斷推流。
支持后臺(tái)推流,后臺(tái)錄制視頻
美顏濾鏡可動(dòng)態(tài)調(diào)節(jié)磨皮,美白,紅潤(rùn)。
兼容GPUImage,一行代碼不用修改就可以直接使用GPUImage的濾鏡。可參考demo。

關(guān)于美顏:

美顏濾鏡可動(dòng)態(tài)調(diào)節(jié)磨皮,美白,紅潤(rùn)。你可以調(diào)出一個(gè)你喜歡的美顏濾鏡。

關(guān)于截幀,鏡像:

推流過(guò)程中可以實(shí)時(shí)截幀。
推流過(guò)程中可以實(shí)時(shí)調(diào)節(jié)鏡像,不會(huì)打斷推流??梢苑謩e調(diào)節(jié)預(yù)覽鏡像,推流鏡像。

關(guān)于性能:

采用相機(jī)回調(diào)紋理texture,OpenGL渲染后直接把textureID傳給編碼器的方案,中間沒(méi)有數(shù)據(jù)格式轉(zhuǎn)換,沒(méi)有g(shù)lReadPixel()函數(shù)耗時(shí)問(wèn)題。所以性能較其它方案要好的多。缺點(diǎn)是必須是Android4.3以上。

關(guān)于使用:

1.所有常用API都在StreamLiveCameraView類中

 <me.lake.librestreaming.ws.StreamLiveCameraView
        android:id="@+id/stream_previewView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

2.初始化推流配置, StreamAVOption類里面有多種參數(shù)可配置,如不配置則使用默認(rèn)值

    /**
     * 設(shè)置推流參數(shù)
     */
    public void initLiveConfig() {
        mLiveCameraView = (StreamLiveCameraView) findViewById(R.id.stream_previewView);

        //參數(shù)配置 start   
        streamAVOption = new StreamAVOption();
        streamAVOption.streamUrl = rtmpUrl;
        //參數(shù)配置 end

        mLiveCameraView.init(this, streamAVOption);
        mLiveCameraView.addStreamStateListener(resConnectionListener);
        //設(shè)置濾鏡組
        LinkedList<BaseHardVideoFilter> files = new LinkedList<>();
        files.add(new GPUImageCompatibleFilter(new GPUImageBeautyFilter()));
        files.add(new GPUImageCompatibleFilter(new GPUImageAddBlendFilter()));
        mLiveCameraView.setHardVideoFilter(new HardVideoGroupFilter(files));
    }

3.開(kāi)始推流錄制 具體參考demo:

          case R.id.btn_startStreaming://開(kāi)始推流
               if(!liveCameraView.isStreaming()){
                   liveCameraView.startStreaming(rtmpUrl);
               }
               break;
           case R.id.btn_stopStreaming://停止推流
               if(liveCameraView.isStreaming()){
                   liveCameraView.stopStreaming();
               }
               break;
           case R.id.btn_startRecord://開(kāi)始錄制
               if(!liveCameraView.isRecord()){ 
                   liveCameraView.startRecord();
               }
               break;
           case R.id.btn_stopRecord://停止錄制
               if(liveCameraView.isRecord()){
                   liveCameraView.stopRecord();                
               }

關(guān)于集成:

方法1.https://github.com/WangShuo1143368701/WSLiveDemo下載后,copy出libWSLive庫(kù)到你的項(xiàng)目中即可。

方法2.

//Add it in your root build.gradle at the end of repositories:
 
 allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
 }

    //Add the dependency

    dependencies { compile  compile 'com.github.WangShuo1143368701:WSLiveDemo:v1.5' }

關(guān)于學(xué)習(xí):

歡迎加入音視頻交流群:364886309

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 用到的組件 1、通過(guò)CocoaPods安裝 2、第三方類庫(kù)安裝 3、第三方服務(wù) 友盟社會(huì)化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 15,180評(píng)論 1 180
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,291評(píng)論 4 61
  • 2018年 1月31日 星期三 晴 今天女兒中午帶上女兒和小寶到孩子們姥姥家吃午飯,吃的白菜肉餡水餃,由于是姥爺...
    wzl_75bf閱讀 400評(píng)論 0 0
  • 明天就是小女兒的生日了,端午節(jié)出生的寶貝聰明伶俐,惹人喜歡。今天高興的帶兩個(gè)寶貝逛街,游玩,孩子對(duì)舞蹈和音...
    幽蘭依依閱讀 215評(píng)論 0 2

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