srs(simple Rtmp Server )的一些说明

简介:

    srs 是国人自己开发的一款视频服务器,采用支持rtmp和hls协议,可以做成容器,让客户端把流推过来来,也可以结合ffmpeg自己主动拉流,详细的说明可以查看srs的wiki:

https://github.com/ossrs/srs/wiki/v2_CN_Home

srs下载地址:http://ossrs.net/srs.release/releases/index.html

srs网页播放器:http://www.ossrs.net/players/srs_player.html?stream=livestream&port=19350#

ffmpeg下载地址:http://www.ffmpeg.org/download.html

或者:wget  http://ffmpeg.gusari.org/static/64bit/ffmpeg.static.64bit.latest.tar.gz 


自己工作中采用的编译参数:    

./configure --prefix=/usr/local/srs --with-hls --with-hds --with-dvr --without-nginx --with-ssl --with-ffmpeg --with-transcode --with-ingest --with-stat --with-http-callback --with-http-server --without-stream-caster --with-http-api --with-librtmp --with-research --with-utest --without-gperf --without-gmc --without-gmp --without-gcp --without-gprof --without-arm-ubuntu12 --without-mips-ubuntu12 --log-trace

make

make install 

ln -sf /usr/local/srs/etc/init.d/srs /etc/init.d/srs


srs做成容器的配置:

    

listen              1935;

max_connections     1000;

pid                 objs/edge.pid;

srs_log_file        ./objs/edge.log;

vhost __defaultVhost__ {

}

    

srs集群的配置:

listen              1935;

max_connections     1000;

pid                 objs/edge.pid;

srs_log_file        ./objs/edge.log;

vhost __defaultVhost__ {

    mode            remote;

    origin          127.0.0.1:19350;

}

    把origin里面的127.0.0.1:19350改成可以提供数据源的srs服务器监听的socket,提供数据源的srs服务可以做成容器让别人推送,也可以自己分发


srs配置分发rtmp流:

listen              1935;

max_connections     1000;

pid                 objs/edge.pid;

srs_log_file        ./objs/edge.log;

vhost __defaultVhost__ {

ingest livestream {

        enabled      on;

        input {      

            type    stream;   

            url    rtmp://58.218.152.98:1935/hls/j2--;

        }

        ffmpeg      ./objs/ffmpeg/ffmpeg-;

        engine {

            enabled          on;

            output          rtmp://127.0.0.1:1935/live/livestream;

        }

    }

}

    type如果是文件的话要改成file,url是流的地址,采用这种配置需要安装ffmpeg


srs配置hls分发:

listen              1935;

max_connections     1000;

pid                 objs/edge.pid;

srs_log_file        ./objs/edge.log;

vhost __defaultVhost__ {

ingest livestream {

        enabled      on;

        input {

            type    stream;

            url    rtmp://58.218.152.98:1935/hls/j2--;

        }

        ffmpeg      ./objs/ffmpeg/ffmpeg;

        engine {

            enabled          on;

            output          rtmp://127.0.0.1:1935/live/livestream;

        }

    }

 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;

    }

}

http_server {

    enabled         on;

    listen          8088;

    dir             ./objs/nginx/html;

}

    hls是采用点播的方式实现直播,把视频差不多大小的片,每个片以.ts结尾,并生成一个  流名.m3u8  作为索引,所以看hls分发有没有生效直接查看http_server里面的dir目录有没有生成这两个文件


下面是实际生产环境中遇到过的问题:

1,视频采集不了,但是加-bsf:a aac_adtstoasc就可以采集

解决方法:直接修改srs的配置文件edge.conf 在engine里面添加aparams并增加,例子如下:

ingest livestream {

        enabled      on;

        input {

            type    stream;

            url http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8; 

        }

        ffmpeg      /tmp/ffmpeg;

        engine {

            enabled         on;

            vcodec          copy;

            acodec          copy;

            aparams 

 {

profile:a   aac_low;

                bsf:a       aac_adtstoasc;

            }

            output          rtmp://127.0.0.1:1935/live/livestream;

        }

    }


2.视频可以正常采集但是用vlc放不了,用完美解码和特殊软件可以

解决方法:加-vsync drop参数(注意:这个只是个人的解决方法,恰好可以用,并不准确,更多的是编码问题),然后加-r 30 解决播放卡帧问题,最终ffmpeg采集参数如下:

 /usr/local/src/ffmpeg -r 30 -i rtmp://23.33.33.118/live/11  -vsync drop -vcodec copy  -c:v copy -report -an -f flv -y rtmp://127.0.0.1:1935/live/11


3.视频播放正常,但是没有音频,查看日志提示:

【warn】[9642][239][11] aac  ignore type=1 for  no sequence header.ret=0


解决:用系统自带的ffmpeg或自己编译的ffmpeg,可能是有些编译好的ffmpeg二进制程序没有对应音频编码功能导致的,并在配置文件中 把acodec 选项选为对应音频编码格式,如果使用hls分片,有时候还要指定hls_acodec,例如:

  hls_acodec      aac;

















本文转自biao007h51CTO博客,原文链接:http://blog.51cto.com/linzb/1776029 ,如需转载请自行联系原作者
相关文章
|
Ubuntu
SRS RTMP流媒体服务器搭建
SRS RTMP流媒体服务器搭建
917 0
|
Java API 网络架构
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码3
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码
2905 0
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码3
|
Java
【MQTT异常】mqtt.inbound.MqttPahoMessageDrivenChannelAdapter Lost connection: 已断开连接; retrying...
【MQTT异常】mqtt.inbound.MqttPahoMessageDrivenChannelAdapter Lost connection: 已断开连接; retrying...
1506 0
|
JavaScript Java Go
Go、Node.js、Python、PHP、Java五种语言的直播推流RTMP协议技术实施方案和思路-优雅草卓伊凡
Go、Node.js、Python、PHP、Java五种语言的直播推流RTMP协议技术实施方案和思路-优雅草卓伊凡
965 0
|
10月前
|
Java Maven
apache-maven-3.9.9-bin.zip 使用步骤(超简单版)
下载Maven安装包并解压,配置MAVEN_HOME环境变量及Path路径,通过cmd输入mvn -v验证安装成功。建议修改本地仓库路径至非C盘,最后在IDEA中设置Maven路径以集成使用,完成开发环境配置。
2647 4
|
编解码 缓存 Ubuntu
在Ubuntu平台搭建RTMP直播服务器使用SRS简要指南
这个简要指南提供了搭建基本 RTMP 直播服务所需知道信息. SRS 还提供许多高级特性如 DVR、转码、边缘缓存等. 若要利用这些特性, 需要进一步阅读官方文档并相应地调整配置文件.
1069 0
|
消息中间件 Ubuntu Java
SpringBoot整合MQTT实战:基于EMQX实现双向设备通信
本教程指导在Ubuntu上部署EMQX 5.9.0并集成Spring Boot实现MQTT双向通信,涵盖服务器搭建、客户端配置及生产实践,助您快速构建企业级物联网消息系统。
3339 1
|
缓存 视频直播 Linux
FFmpeg开发笔记(四十三)使用SRS开启SRT协议的视频直播服务
《FFmpeg开发实战》书中介绍了轻量级流媒体服务器MediaMTX,适合测试但不适用于生产环境。SRS是一款国产开源服务器,支持RTMP、SRT等协议,适合生产使用。要启用SRS的SRT推流,需配置`srt.conf`,开启SRT服务并配置端口。在确保FFmpeg集成libsrt后,拉流则使用类似但带有`m=request`的地址。在Windows上,同样需要集成libsrt的FFmpeg来使用ffplay拉流。SRS的日志确认了推拉流的成功。书中提供更深入的FFmpeg开发知识。
1763 2
FFmpeg开发笔记(四十三)使用SRS开启SRT协议的视频直播服务
基于springboot的教育资源共享管理系统
本研究聚焦教育资源共享管理系统,旨在通过Java、Spring Boot、MySQL与Vue技术构建高效平台,促进教育公平,提升教学质量,优化资源配置,推动教育信息化发展。