SRS-3.0拉流rtmp转hls 的过程

74 篇文章 4 订阅

SRS是比较优秀的流媒体服务器。主要功能是接受媒体发布端的rtmp push,并发布。

但是在目前的3.0版本中有ingest功能,即拉流转发。SRS作为客户端拉流后,进行媒体的分发。这在某些情况下非常有用。

 

一、编译SRS

具体编译按官方文档,非常容易。我的操作系统是ubuntu 18.04,即使centos差别应该也不大。

 

二、编译ffmpeg

拉流转发的内部是使用ffmpeg实现的,没有ffmpeg会导致拉流失败

具体可以参考https://github.com/ossrs/srs/issues/1528

wget http://www.ffmpeg.org/releases/ffmpeg-4.2.tar.gz
tar -zxvf ffmpeg-4.2.tar.gz
cd ffmpeg-4.2
./configure
make
make install

这应该是比较单纯的ffmpeg,如果需要更多功能的ffmpeg,可以参考

https://github.com/markus-perl/ffmpeg-build-script

这个里面的编译脚本非常全,x265等插件都有。但是个别链接需要科学上网才能访问。

比如:https://aomedia.googlesource.com/aom/+archive/69a986c7d4c354dfbccec570ccbc44688612c083.tar.gz

可以将无法下载的模块屏蔽掉。

总之编译完成ffmpeg后,将ffmpeg复制到 obj/ffmpeg/bin/ffmpeg即可,这个路径是SRS的默认ffmpeg路径,可以在下面的配置文件中进行配置。

 

三、配置拉流

下面是ingest.rtsp.conf的默认配置,拉rtsp,向外推的是rtmp。

listen              1935;
max_connections     1000;
vhost __defaultVhost__ {
    ingest {
        enabled      on;
        input {
            type    stream;
            url     rtsp://admin:12345678@192.168.2.21:554/Streaming/Channels/501?transportmode=unicast;
        }
        ffmpeg      ./objs/ffmpeg/bin/ffmpeg;
        engine {
            enabled          on;
            perfile {
                rtsp_transport tcp;
            }
            vcodec copy;
            acodec copy;
            output          rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream;
        }
    }
}

修改配置文件

一是加入hls的支持

二是修改配置拉多个流,需要在ingest后面标名字进行区别,默认配置中没有名字,加多个会出错

# use ffmpeg to ingest file/stream/device to SRS
# @see https://github.com/ossrs/srs/wiki/v1_CN_SampleIngest
# @see full.conf for detail config.

listen              1935;
max_connections     1000;

daemon              on;
http_server {
    enabled         on;
    listen          8080;
    dir             ./objs/nginx/html;
}


vhost __defaultVhost__ {
    ingest tv{
        enabled      on;
        input {
            type    stream;
            url     rtmp://media.yunyuntx.com/live/tv;
        }
        ffmpeg      ./objs/ffmpeg/bin/ffmpeg;
        engine {
            enabled          on;
            vcodec copy;
            acodec copy;
            output  rtmp://127.0.0.1:[port]/live/tv; 
        }
    }
	
	ingest my{
        enabled      on;
        input {
            type    stream;
            url     rtmp://media.yunyuntx.com/live/my;
        }
        ffmpeg      ./objs/ffmpeg/bin/ffmpeg;
        engine {
            enabled          on;
            vcodec copy;
            acodec copy;
            output  rtmp://127.0.0.1:[port]/live/my; 
        }
    }
	
	 hls {
        enabled         on;
        hls_fragment    10;
        hls_window      60;
        hls_path        ./objs/nginx/html;
        hls_m3u8_file   [app]/[stream].m3u8;
        hls_ts_file     [app]/[stream]-[seq].ts;
    }
}

 

最后运行测试即可

./obs/srs  -c   ./conf/ingest.rtmp.conf

 

ps -aux|grep

可以看到后台有2个ffmepg进程在运行

root@host:/data/srs/srs/trunk$ ps aux|grep ffmpeg
root1     6365  0.5  0.0  83124 17416 pts/2    S    10:48   0:04 ./objs/ffmpeg/bin/ffmpeg -loglevel info -f flv -i rtmp://yunyuntx.com/live/tv -vcodec copy -acodec copy -f flv -y rtmp://127.0.0.1:1935/live/tv
root1     6366  0.5  0.0  83932 18224 pts/2    S    10:48   0:04 ./objs/ffmpeg/bin/ffmpeg -loglevel info -f flv -i rtmp://yunyuntx.com/live/my -vcodec copy -acodec copy -f flv -y rtmp://127.0.0.1:1935/live/my
root1     6611  0.0  0.0  16180  1108 pts/2    S+   11:02   0:00 grep --color=auto ffmpeg

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路边闲人2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值