前言:
目前大家对“nginxrtmpsrs”大体比较关心,同学们都想要学习一些“nginxrtmpsrs”的相关文章。那么小编也在网上网罗了一些有关“nginxrtmpsrs””的相关资讯,希望同学们能喜欢,姐妹们快快来了解一下吧!1.背景
SRS流媒体服务部署起来之后,需要实现 截图 功能。本文是实现过程。
2. 思路
可选有两种方式实现。方式1:HTTP回调+自建服务
步骤如下:
1、启动一个HTTP服务,这个服务可以接收来自 SRS 的HTTP回调2、启动SRS,3、当客户端发布流时SRS触发回调事件 on_publish,on_unpublish ,会发送 HTTP请求到第一步的“HTTP服务”4、“HTTP服务” 从请求中获得流地址,通过 ffmpeg 工具截图。
方式2:使用Transcoder直接截图
步骤如下:
1、在SRS 启配置一个 transcode 服务2、当流输入时,即通过 ffmpeg 工具截图3. 实现示例
方式1:HTTP回调+自建服务
**(1) 启动一个HTTP服务
从SRS源代码中找到文件夹 trunk/research/api-server ,这里有个 python 脚本,把它跑起来。注意它依赖 ffmpeg 工具。
C++音视频开发学习资料:点击领取→音视频开发(资料文档+视频教程+面试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)
(2) 配置 SRS
SRS的配置如下:
# snapshot.conflisten 1935;max_connections 1000;daemon off;srs_log_tank console;vhost __defaultVhost__ { http_hooks { enabled on; on_publish ; on_unpublish ; } ingest { enabled on; input { type file; url ./doc/source.200kbps.768x320.flv; } ffmpeg ./objs/ffmpeg/bin/ffmpeg; engine { enabled off; output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream; } }}
在上面的配置中,它指定了 http_hooks 配置,并指示了 on_publish和 on_unpublish 事件。当客户端开始推送流时,将触发事件,发送HTTP请求。
这里配置文件里的 ingest 配置项 是 模拟了一个 输入,它指定了一个 flv 文件,并开始推送流。
(3) 启动SRS
启动SRS后,会从 ./doc/source.200kbps.768x320.flv 这个路径的文件推流 。然后就可以在 HTTP服务的 /api-server/static-dir/live 文件夹下找到图片。
方式2:使用Transcoder直接截图
Transcoder直接截图 的方式比较简单。修改 SRS 的配置文件:
listen 1935;max_connections 1000;daemon off;srs_log_tank console;vhost __defaultVhost__ { transcode { enabled on; ffmpeg ./objs/ffmpeg/bin/ffmpeg; engine snapshot { enabled on; iformat flv; vfilter { vf fps=1; } vcodec png; vparams { vframes 6; } acodec an; oformat image2; output ./objs/nginx/html/[app]/[stream]-%03d.png; } } ingest { enabled on; input { type file; url ./doc/source.200kbps.768x320.flv; } ffmpeg ./objs/ffmpeg/bin/ffmpeg; engine { enabled off; output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream; } }}
解释:
这个配置文件 配置一个 ingest ,它从 ./doc/source.200kbps.768x320.flv 文件生成推流。
transcode 配置项指定了一个 转码器,配置了 ffmpeg 生成 png 图片的截图。
Docker 相关的指令
用 docker 来示例的,指令:
docker run --rm -p 8085:8085 --name=api --network=host -v ~/Downloads/srs/objs/:/objs apidocker run --rm -p 1935:1935 -p 1985:1985 -p 8080:8080 --name srs --network=host -v ~/Downloads/srs/conf/:/usr/local/srs/conf/ -v ~/Downloads/srs/objs/:/usr/local/srs/objs/ -v ~/Downloads/srs/doc/:/usr/local/srs/doc/ ossrs/srs:3
标签: #nginxrtmpsrs