windows rtmp服务器(GB28181学习笔记7 媒体流转推rtmp)

一、说明

本文接上篇,实现功能:

  1. 接收摄像头的rtp流
  2. 推送rtp流到rtmp服务器
  3. 使用vlc播放rtmp视频

二、准备工作1. 按前篇完成GB28181 invite解析2. 安装vls播放器、准备ffmpeg工具3. 准备ZLMediaKit

https://github.com/xiongziliang/ZLMediaKit/wiki/ZLMediaKit%E6%8E%A8%E6%B5%81%E6%B5%8B%E8%AF%95

三、实现1. 看看摄像头是否有流推出来

经过前几篇的功能,现在已经有媒体流推送到服务器端口,如果使用ffmpeg和 nginx-rtmp,可以测试有没有流:(这里实际可以跳过,只是验证有流但不能正确播放)现在创建一个sdp文件,放媒体信息:

v=0o=34020000001320000001 0 0 IN IP4 媒体服务器ips=Playc=IN IP4 媒体服务器ipt=0 0m=video 10000 RTP/AVP 96 97 98a=sendrecva=rtpmap:96 PS/90000a=rtpmap:98 H264/90000a=rtpmap:97 MPEG4/90000y=00000000031234567891011

媒体信息在摄像头回复的invite信息里可以看到。执行命令:

ffmpeg -protocol_whitelist "file,rtp,udp,tls" -i test1.sdp -vcodec copy -acodec copy -f flv rtmp://nginx 地址:9092/hls/t_1_1

使用vlc打开rtmp地址:

rtmp://nginx地址:9092/hls/t_1_1

正常情况就有视频出现了。但显示的画面很可能是不正常的,

这是由于GB28181的封包格式是RTP承载PS流。下面使用ZL搭一个媒体服务器。

2.安装ZL作媒体服务器

ZLMediaKit 是一个基于C++11的高性能运营级流媒体服务框架,目前在快速迭代更新中。其项目特点:

  • 基于C++11开发,避免使用裸指针,代码稳定可靠,性能优越。
  • 支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/Websocket-FLV/GB28181/MP4),支持协议互转。
  • 使用多路复用/多线程/异步网络IO模式开发,并发性能优越,支持海量客户端连接。
  • 代码经过长期大量的稳定性、性能测试,已经在线上商用验证已久。 支持linux、macos、ios、android、windows全平台。
  • 支持画面秒开、极低延时(500毫秒内,最低可达100毫秒)。 提供完善的标准C API,可以作SDK用,或供其他语言调用。
  • 提供完整的MediaServer服务器,可以免开发直接部署为商用服务器。 提供完善的restful api以及web
  • hook,支持丰富的业务逻辑。 打通了视频监控协议栈与直播协议栈,对RTSP/RTMP支持都很完善。
  • 全面支持H265/H264/AAC/G711。

可以从:https://github.com/xiongziliang/ZLMediaKit/releases下载可执行文件,这里在CentOS系统使用docker:

# 创建dockerdocker run -id -p 10000:10000/udp -p 1935:1935 -p 8080:80 -p 554:554 -p 332:332 -p 9000:9000 gemfield/zlmediakit:20.04-runtime-ubuntu18.04

其它docker命令:

windows rtmp服务器(GB28181学习笔记7 媒体流转推rtmp)

# 进入容器docker exec -it containerid /bin/bash# 启动容器docker start containerid

ZLMediaKit默认使用10000端口收GB28181流。

ZLMediaKit收到流后,会打印:

日志中相关字符串分别代表:

2020-04-10 12:51:52.331 I | regist rtsp __defaultVhost__ rtp 206442D7 ^ ^ ^ ^ schema vhost app stream_id

如果控制台提示:

onDecode unsupported codec type:STREAM_AUDIO_G711

就把摄像头的音频编码格式调整一下。

使用vlc就可以打开视频了:206442D7

rtsp://ip/rtp/206442D7rtmp://ip/rtp/206442D7

接下来对整个项目进行整合。

未经允许不得转载:天津武清区柚子软件开发工作室 » windows rtmp服务器(GB28181学习笔记7 媒体流转推rtmp)
分享到: 更多 (0)