新闻资讯

新闻资讯 行业动态

用SRS和FFMPEG进行直播流转码

编辑:008     时间:2020-02-15

一、直播流转码配置及说明

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]


四、如何对某一个app下的流都进行转码

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进行转码

        ......

    }

}


郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表