用SRS和FFMPEG進行直播流轉碼

WIKI:https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEGgit

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

listen              1935;github

max_connections     1000;app

#定義一個默認的vhostui

vhost __defaultVhost__ {編碼

}spa

#定義一個名爲v.flyfn.com的vhost,這樣只對v.flyfn.com這個vhost中全部流進行轉碼線程

vhost v.flyfn.com {日誌

    transcode {code

        enabled     on;     #開始實時轉碼orm

        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];

        }

    }

}

2、用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


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

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


4、如何對某一個app下的流都進行轉碼

listen 1935;

vhost v.flyfn.com {

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

        ......

    }

}

5、如何對某一路直播流進行轉碼

listen 1935;

vhost v.flyfn.com {

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

        ......

    }

}

相關文章
相關標籤/搜索