為了直播流暢,實現直播商城原始碼的轉碼

雲豹科技曉彤發表於2021-09-03

直播商城原始碼為了減少網路波動對直播的影響,會實現直播流轉碼的功能,那麼直播商城原始碼是怎麼實現的轉碼的呢?

一、直播流轉碼配置及說明

listen              1935;

max_connections     1000;

#定義一個預設的vhost

vhost __defaultVhost__ {

}

#定義一個名為v.flyfn.com的vhost,這樣只對v.flyfn.com這個vhost中所有流進行轉碼

vhost v.flyfn.com {

    transcode {

        enabled     on;      #開始實時轉碼

        ffmpeg      ./objs/ffmpeg/bin/ffmpeg;    #ffmpeg的執行檔案

        engine sd {       #這裡透過engine定義轉一個名為sd的轉碼引擎,這個名稱在下面輸出流的時候用到

            enabled         on;    #開始,設定為off就是關閉

            vfilter {      #對應ffmpeg中的濾鏡引數,可以在這裡寫

                v           quiet;   #減少ffmpeg的輸出日誌

            }

            vcodec          libx264;  #影片編碼器

            vbitrate        500;    #影片位元率

            vfps            25;    #影片幀率

            vwidth          768;     #寬

            vheight         320;     #高

            vthreads        12;    #使用ffmpeg執行緒數

            vprofile        main;   #編碼等級,high、main、baseline

            vpreset         medium;   #影片預設

            vparams {         #ffmpeg的其他影片引數

                g            100;   # 指定gop時長為4秒=100 / 25(vfps)

            }

            acodec          libfdk_aac;    #音訊編碼器

            abitrate        70;      #音訊位元率

            asample_rate    44100;      #音訊取樣率

            achannels       2;     #聲道

            aparams {     #ffmpeg中的其他音訊引數

            }

            #轉碼後的流輸出到那裡,這裡是輸出到本機了。另外一種推流到vhost的方法:

            #rtmp://SRS_IP:[port]/[app]?vhost=[vhost]/[stream]

            #[vhost] 輸入流的vhost

            #[port] 輸入流的埠

            #[app] 輸入流的app

            #[stream] 輸入流的流名稱

            #[engine] 轉碼引擎的名稱

            output          rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine];

        }

         #可以定義多個engine

        engine ld {

            enabled         on;

            vfilter {

            }

            vcodec          libx264;

            vbitrate        300;

            vfps            25;

            vwidth          640;

            vheight         480;

            vthreads        12;

            vprofile        main;

            vpreset         medium;

            vparams {

            }

            acodec          libfdk_aac;

            abitrate        70;

            asample_rate    44100;

            achannels       2;

            aparams {

            }

            output          rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine];

        }

    }

}

二、用ffmpeg推流

./ffmpeg -re -i 'abc.rmvb' -f flv -y rtmp://v.flyfn.com:1935/live?vhost=v.flyfn.com/test


原始影片播放:rtmp://v.flyfn.com/live/test

轉碼流1(sd):rtmp://v.flyfn.com/live/test_sd

轉碼流2(ld):rtmp://v.flyfn.com/live/test_ld


三、推流到srs的vhost時的另一種方法

rtmp://SRS_IP:[port]/[app]?vhost=[vhost]/[stream]


四、如何對直播商城原始碼的流都進行轉碼

listen 1935;

vhost v.flyfn.com {

    transcode live{          #對形如rtmp://srs_ip:1935/live下的流進行轉碼

        ......

    }

}

五、如何對直播商城原始碼的某一路直播流進行轉碼

listen 1935;

vhost v.flyfn.com {

    transcode live/livestream {          #對形如rtmp://srs_ip:1935/live/livestream進行轉碼

        ......

    }

}

宣告:本文由雲豹科技轉發自馮繼虎部落格,如有侵權請聯絡作者刪除


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70002045/viewspace-2790321/,如需轉載,請註明出處,否則將追究法律責任。

相關文章