文档章节

用SRS和FFMPEG进行直播流转码

冯继虎
 冯继虎
发布于 2015/05/13 23:29
字数 546
阅读 10615
收藏 16

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

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

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

        ......

    }

}


© 著作权归作者所有

上一篇: SRS配置HLS分发
下一篇: 什么是rtmp协议?
冯继虎
粉丝 33
博文 53
码字总数 21574
作品 0
西城
部门经理
私信 提问
加载中

评论(19)

jhghjgjh
jhghjgjh
[tcp @ 0x16eec20] Failed to resolve hostname v.flyfn.com: Name or service not known
[rtmp @ 0x16ee620] Cannot open connection tcp://v.flyfn.com:1936
rtmp://v.flyfn.com:1936/mytv?vhost=v.flyfn.com/mytv/123?pushCode=d8a36431b19c4fcd9c0427aa1a7b0f14: Input/output error


为什么找不到 v.flyfn.com 我rtmp 是自己搭建的 配置没发现什么问题
冯继虎
冯继虎 博主
[tcp @ 0x16eec20] Failed to resolve hostname v.flyfn.com: Name or service not known
自己看看错误信息,v.flyfn.com是我自己随便配置的域名,写hosts或者用一个你自己能用的域名。解析不了域名当当然报错。
jhghjgjh
jhghjgjh
感谢博主,这些都搞定了但是有出现了一个问题 我转码后的视屏播放不了,但是不转吗的视屏可播放 打印正常. 附加打印
[2019-06-24 10:45:55.113][trace][21389][127] connected stream, tcUrl=rtmp://127.0.0.1:1935/mytv, pageUrl=, swfUrl=, schema=rtmp, vhost=127.0.0.1, port=1935, app=mytv, stream=111_ld, param=, args=null
[2019-06-24 10:45:55.113][trace][21389][127] source url=47.112.131.52/mytv/111_ld, ip=113.111.114.238, cache=1, is_edge=0, source_id=-1[-1]
[2019-06-24 10:45:55.113][trace][21389][127] dispatch cached gop success. count=0, duration=-1
[2019-06-24 10:45:55.113][trace][21389][127] create consumer, queue_size=30.00, jitter=1
[2019-06-24 10:45:55.123][trace][21389][127] mw changed sleep 350=>350, max_msgs=128, esbuf=218750, sbuf 87040=>218750, realtime=0
[2019-06-24 10:45:55.123][trace][21389][127] start play smi=0.00, mw_sleep=350, mw_enabled=1, realtime=0, tcp_nodelay=0
[2019-06-24 10:45:55.123][trace][21389][127] -> PLA time=0, msgs=0, okbps=34,0,0, ikbps=27,0,0, mw=350
[2019-06-24 10:45:56.176][trace][21389][108] transcode p
h
heiren93

引用来自“heiren93”的评论

引用来自“heiren93”的评论

博主 你好 !我利用ingest把视频流拉到SRS 它只能以rtmp的格式转发出去吗 ?
我是这样配置的
# conf/ingest.conf
listen 1935;
max_connections 1000;
vhost __defaultVhost__ {
ingest livestream {
enabled on;
input {
type stream;
url rtmp://172.18.147.125/live/livestream;
}
ffmpeg ./objs/ffmpeg/bin/ffmpeg;
engine {
enabled off;
output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream;
}
}
}

回复@heiren93 : 我想把视频流转成 HLS,HTTP-flv等其他格式转发出去 应该怎么做

引用来自“Johnny_feng”的评论

再增加一个vhost,在这个vhost中配置输出hls、http-flv。default vhost推出的流推到新增加的vhost中。
我找到问题了,谢谢你的回答!
h
heiren93

引用来自“heiren93”的评论

引用来自“heiren93”的评论

博主 你好 !我利用ingest把视频流拉到SRS 它只能以rtmp的格式转发出去吗 ?
我是这样配置的
# conf/ingest.conf
listen 1935;
max_connections 1000;
vhost __defaultVhost__ {
ingest livestream {
enabled on;
input {
type stream;
url rtmp://172.18.147.125/live/livestream;
}
ffmpeg ./objs/ffmpeg/bin/ffmpeg;
engine {
enabled off;
output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream;
}
}
}

回复@heiren93 : 我想把视频流转成 HLS,HTTP-flv等其他格式转发出去 应该怎么做

引用来自“Johnny_feng”的评论

再增加一个vhost,在这个vhost中配置输出hls、http-flv。default vhost推出的流推到新增加的vhost中。
我按照你说的配置了一个conf文件,但是收不到http-flv格式的流,想请教一下哪里出错了。
listen 1935;
max_connections 1000;
http_server {
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
vhost __defaultVhost__ {
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
hstrs on;
}

ingest livestream {
enabled on;
input {
type file;
url ./doc/source.200kbps.768x320.flv;
}
ffmpeg ./objs/ffmpeg/bin/ffmpeg;
engine {
enabled off;
output http://172.18.147.125:8080/live/livestream.flv;
}
}
}
😄
h
heiren93

引用来自“heiren93”的评论

引用来自“heiren93”的评论

博主 你好 !我利用ingest把视频流拉到SRS 它只能以rtmp的格式转发出去吗 ?
我是这样配置的
# conf/ingest.conf
listen 1935;
max_connections 1000;
vhost __defaultVhost__ {
ingest livestream {
enabled on;
input {
type stream;
url rtmp://172.18.147.125/live/livestream;
}
ffmpeg ./objs/ffmpeg/bin/ffmpeg;
engine {
enabled off;
output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream;
}
}
}

回复@heiren93 : 我想把视频流转成 HLS,HTTP-flv等其他格式转发出去 应该怎么做

引用来自“Johnny_feng”的评论

再增加一个vhost,在这个vhost中配置输出hls、http-flv。default vhost推出的流推到新增加的vhost中。
感谢你的回答!
冯继虎
冯继虎 博主

引用来自“heiren93”的评论

引用来自“heiren93”的评论

博主 你好 !我利用ingest把视频流拉到SRS 它只能以rtmp的格式转发出去吗 ?
我是这样配置的
# conf/ingest.conf
listen 1935;
max_connections 1000;
vhost __defaultVhost__ {
ingest livestream {
enabled on;
input {
type stream;
url rtmp://172.18.147.125/live/livestream;
}
ffmpeg ./objs/ffmpeg/bin/ffmpeg;
engine {
enabled off;
output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream;
}
}
}

回复@heiren93 : 我想把视频流转成 HLS,HTTP-flv等其他格式转发出去 应该怎么做
再增加一个vhost,在这个vhost中配置输出hls、http-flv。default vhost推出的流推到新增加的vhost中。
h
heiren93

引用来自“heiren93”的评论

博主 你好 !我利用ingest把视频流拉到SRS 它只能以rtmp的格式转发出去吗 ?
我是这样配置的
# conf/ingest.conf
listen 1935;
max_connections 1000;
vhost __defaultVhost__ {
ingest livestream {
enabled on;
input {
type stream;
url rtmp://172.18.147.125/live/livestream;
}
ffmpeg ./objs/ffmpeg/bin/ffmpeg;
engine {
enabled off;
output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream;
}
}
}

回复@heiren93 : 我想把视频流转成 HLS,HTTP-flv等其他格式转发出去 应该怎么做
h
heiren93
博主 你好 !我利用ingest把视频流拉到SRS 它只能以rtmp的格式转发出去吗 ?
我是这样配置的
# conf/ingest.conf
listen 1935;
max_connections 1000;
vhost __defaultVhost__ {
ingest livestream {
enabled on;
input {
type stream;
url rtmp://172.18.147.125/live/livestream;
}
ffmpeg ./objs/ffmpeg/bin/ffmpeg;
engine {
enabled off;
output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream;
}
}
}
冯继虎
冯继虎 博主

引用来自“biao007h”的评论

你好,想请教下,ffmpeg -vsync drop 参数怎么写入到srs配置文件中

引用来自“Johnny_feng”的评论

在vfilter中增加 vsync drop;试试。

引用来自“biao007h”的评论

试过这种写法了,不过不行,还是谢谢你了
那你试过没有不要写在filter中,写在 vparams { } 这个里面。可以看看vsync drop在ffmpeg中是滤镜还是参数。
b
biao007h

引用来自“biao007h”的评论

你好,想请教下,ffmpeg -vsync drop 参数怎么写入到srs配置文件中

引用来自“Johnny_feng”的评论

在vfilter中增加 vsync drop;试试。
试过这种写法了,不过不行,还是谢谢你了
冯继虎
冯继虎 博主

引用来自“biao007h”的评论

你好,想请教下,ffmpeg -vsync drop 参数怎么写入到srs配置文件中
在vfilter中增加 vsync drop;试试。
srs配置-基本RTMP配置 && 日志配置

1、RTMP URL rtmp://HOST:PORT/app/streamname rtmp: 协议头 HOST:注意的IP地址或域名 app: 应用名称 streamname:流名称 2、SRS中基本RTMP的配置 listen 1935; pid ./objs/srs.pid; chunk......

Johnny_feng
2015/05/12
7.6K
6
利用Simple-RTMP-Server搭建RTMP和HLS直播服务(上)

SRS(Simple-RTMP-Server)定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码,在Github上人气颇高。本文是由王学投稿的SRS搭建直播的学习笔记,由LiveVideoStac...

livevideostack
2017/12/04
0
0
Twitch如何实现转码比FFmpeg性能提升65%?(下)

文 / Jeff Gong, Sahil Dhanju, Chih-Chiang Lu, Yueshi Shen 编者按:超过220万创作者在Twitch发布海量的视频,这对实时转码业务造成了巨大压力,Twitch团队通过优化多线程的转码服务以及I...

livevideostack
2017/12/13
0
0
ffmpeg: hls 转流 rtmp

最近遇到一个需求,需要将hls协议的直播流转换成rtmp协议的直播流;在网上找了很长时间,没有找到相应的技术文章,最后leader给了一个终极命令搞定: 如果提示缺少 libx264 ,可能是你安装f...

那只是一股逆流
2018/04/27
252
0
ffmpeg在windows下视频采集

ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。 ffmpeg在Linux下的...

WuHonghai
2011/11/18
2.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
6
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部