如何从RTSP源(比如IP摄像头)将流拉到(pull)Wowza Stream Engine?
这篇文章介绍了如何将一个直播流从RTSP源(比如一个支持rtsp的IP摄像头)采用拉(Pull)的方式拉到Wowza Stream Engine,并由Wowza Stream Engine对外提供直播流服务。
如果你使用的是Wowza Streaming Engine软件,那么你可以用Wowza Streaming Engine Manager管理界面来配置,非常简单。
你最好使用支持HTML5和CSS3的最新版本的Web浏览器,我们建议你用Google Chrome。
-
1、首先你需要登陆Wowza Streaming Engine Manager管理界面,然后在首页点击顶部的 Server 菜单,如下图所示:
-
2、在 Server 界面左侧导航菜单中找到 Stream Files 菜单,点击 Stream Files菜单,然后再点击主界面上的Add Stream File按钮,如下图所示:
-
在Add Stream File对话框,输入这个流的名字,然后输入Stream URI,然后点击Add.
这里就是要填入你的IP摄像头输出流的RTSP地址。
Stream URI. 要了解更多,请阅读常见IP摄像头的URL格式.
-
然后,启动这个流:
-
在Server菜单,点击Stream Files, 然后点击你在上一步创建的stream 文件右侧的Connect图标。
-
在Connect a Stream File对话框,在Application Name中选择live,在MediaCaster Type中选择rtp,然后点击OK.
- The
之后界面会提示你Connection successful。
常见摄像头的RTSP URL格式
Axis
Axis 摄像头:
rtsp://[camera-ip-address]:554/axis-media/media.amp
Axis摄像头支持在URL中增加一些查询参数,用来对输出流的参数做一些修改。请阅读Axis的
VAPIX API documentation 以了解更多。
例如,你可以控制视频的编码格式
rtsp://[camera-ip-address]:554/axis-media/media.amp?videocodec=h264&compression=90
Panasonic的摄像头
rtsp://ip_adx/MediaInput/h264
Sony
Sony的摄像头:
rtsp://ip_adx/media/video1
SONY SNC-CH/DH/RH 的摄像头和Wowza配合的很好。你先要根据下面的介绍,将第一个流的视频格式设置为H.264:
rtsp://[login:password@][camera domain name or IP address]/media/video1
故障排查
用VLC来测试你的摄像头的输出流
你最好先用VLC来测试你的摄像头的输出流可以正常播放,并且编码格式是H.264, AAC或MP3:
- 打开VLC播放器.
- 在Media菜单,点击Open Network Stream, 输入你的摄像头RTSP url,然后点击Play.
-
当流开始正常播放时,在Tools菜单,点击Codec Information,确认视频格式如下:
- H.264 或 AVC1 或 MPEG4 Part10
- AAC
- MP3
RTSP/RTP
RTSP/RTP 流协议通常用于Android终端。注:4.0版本以上的Android终端也支持Apple HLS。
如果要用RTSP/RTP协议,请确认UDP端口0-65535是打开的.
注意: 要配置Wowza Streaming Engine 正确输出RTSP流,请阅读
How to troubleshoot RTSP/RTP playback.
RTPTransportMode
如果你的摄像头不支持RTSP/RTP interleaved (RTP over TCP), 请将
RTPTransportMode 参数从
interleave改为
udp.
用Wowza Streaming Engine Manager 管理界面来配置
RTPTransportMode参数可以配置在
.stream文件中,要了解更多,请阅读
如何在Wowza Streaming Engine 的Stream File中为每一个流添加个性化的设置参数?.
XML configuration
-
用文本编辑器打开你的应用的[install-dir]/conf/[application]/Application.xml文件
将RTPTransportMode参数按如下修改:
<MediaCaster>
<RTP>
<RTSP>
<!-- udp, interleave -->
<RTPTransportMode>udp</RTPTransportMode>
</RTSP>
</RTP>
...
</MediaCaster>
重启Wowza media server让配置生效
注意:
RTPTransportMode 参数对进入这个应用的所有RTSP流都生效,如果你需要只对其中一个流生效,则需要将这个参数设置到.stream文件中。
请阅读
如何在Wowza Streaming Engine 的Stream File中为每一个流添加个性化的设置参数?.
针对有的摄像头需要一些额外的配置
当输出RTSP/RTP流时,你可以强制输入MPEG-TS格式,要了解更多,请阅读
如何强制输出MPEG-TS流.
rtspValidationFrequency
有些IP摄像头可能不支持Wowza Streaming Engine间歇性的对RTSP/RTP连接做校验,这些摄像头每隔15-30秒会断开再重连。
你可以增加
rtspValidationFrequency参数以关掉RTSP/RTP连接校验:
用Wowza Streaming Engine Manager来配置
-
在Wowza Streaming Engine Manager界面,点击顶部的Applications菜单,然后点击你的应用名子(例如live).
-
在应用的主界面的PropertiesTAB页,在Quick Links导航中点击Custom.
- 在Custom部分,点击Edit.
-
点击Add Custom Property, 在Add Custom Property对话框中,按如下设置,然后点击Add:
- Path - 选择 /Root/Application/MediaCaster.
- Name - 输入 rtspValidationFrequency.
- Type - 选择 Integer.
- Value - 输入 0. 单位是毫秒,设置为0表示关掉这个参数
- 点击 Save, 重启直播应用,让配置生效
rtspFilterUnknownTracks
有些IP摄像头的RTSP输出流中会增加一些Wowza 无法识别的应用数据.
你可以用
rtspFilterUnknownTracks参数来过滤掉这些轨道。
用Wowza Streaming Engine Manager来配置
- 在Wowza Streaming Engine Manager管理界面,点击Applications,在点击你的直播应用(例如live).
-
- 在应用主界面的Propertiestab页,点击Quick Links导航中的Custom.
- In the Custom area, click Edit.
-
点击Add Custom Property, 在Add Custom Property对话框,按如下填写,然后点击Add:
- Path - 选择 /Root/Application/MediaCaster.
- Name - 输入 rtspFilterUnknownTracks.
- Type - 选择 Boolean
- Value - 输入 true.
- 点击Save,然后重启应用,让配置生效
你可以屏蔽掉音频或视频轨道
你可以添加
rtspStreamAudioTrack和
rtspStreamVideoTrack的参数来屏蔽掉音频或视频。
用Wowza Streaming Engine Manager 来配置
-
在Wowza Streaming Engine Manager点击Applications菜单直播应用例如(live)
-
在应用的主界面的Propertiestab页,点击Quick Links导航条Custom
- 在Custom部分,点击Edit.
-
点击Add Custom Property, 在Add Custom Property对话框中,按下面配置,然后点击Add:
- Path - 选择 /Root/Application/MediaCaster.
- Name - 输入 rtspStreamAudioTrack.
- Type - 选择 Boolean.
- Value - 输入 false.
-
重复前面的步骤,按下面的配置,添加rtspStreamVideoTrack 参数:
- Path - 选择 /Root/Application/MediaCaster.
- Name - 输入 rtspStreamVideoTrack.
- Type - 选择 Boolean.
- Value - 输入 false.
- 点击Save, 重启直播应用,让配置生效
缺失音频或视频
如果发现IP摄像头的RTSP流中缺失音频或视频,请检查日志,看看是否有下面的日志:
RTPSessionDescriptionDataProviderBasicRTSPWorker.buildSDPData: SDP data missing rtpmap entry for [audio] track. Try adding MediaCaster/Property rtspDefaultAudioRTPMap with track media information.
RTPSessionDescriptionDataProviderBasicRTSPWorker.buildSDPData: SDP data missing rtpmap entry for [video] track. Try adding MediaCaster/Property rtspDefaultVideoRTPMap with track media information.
用Wowza Streaming Engine Manager来配置
- 在Wowza Streaming Engine Manager,点击Applications菜单的直播应用(例如live).
-
在应用主界面的Propertiestab页,点击Quick Links导航的Custom
- 在Custom部分,点击Edit.
-
点击Add Custom Property, 在Add Custom Property对话框中,按如下配置,然后点击Add:
- Path - 选择 /Root/Application/MediaCaster.
- Name - 输入 rtspDefaultAudioRTPMap.
- Type - 选择 String.
- Value - 输入 PCMU/8000.
- 点击 Save, 然后重启应用,让配置生效
输出RTSP的debug日志
你可以把Wowza服务器和IP摄像头(RTSP源)之间的信令交互过程的输出到日志中,只要添加
debugRTSPSession参数即可实现.
用Wowza Streaming Engine Manager 来配置
- 在Wowza Streaming Engine Manager,点击Applications菜单的直播应用(例如live)
-
在应用主界面的Propertiestab页,点击Quick Links导航的Custom:
- 在Custom部分,点击Edit.
-
点击Add Custom Property, 在Add Custom Property对话框,按如下填写,然后点击Add:
- Path - 选择 /Root/Application/MediaCaster.
- Name - 输入 debugRTSPSession.
- Type - 选择 Boolean.
- Value - 输入 true.
- 点击 Save, 然后重启应用,让配置生效.
.stream文件的一些常见问题
很多文本编辑器会自动给文件加上
.txt的文件后缀名。这会导致日志中出现下面的错误:
SDP file missing: c:/program files/wowza media systems/wowza streaming engine [version]/content/camera.stream
要解决这个问题,请把
.txt文件后缀名去掉。
调整AAC封包格式
Wowza media server 支持
mpeg4-generic和
mp4a-latm (3gpp) 两种AAC音频的封包格式。默认使用
mpeg4-generic.
用Wowza Streaming Engine Manager来配置
要调整为
mp4a-latm (3gpp), 按如下配置:
-
在Wowza Streaming Engine Manager上,点击Applications菜单上的直播应用名(例如live)
-
在应用主界面的Propertiestab页,点击b>Quick Links的Custom
- 在Custom部分, 点击Edit.
-
点击Add Custom Property, 在Add Custom Property对话框,按如下配置,然后点击Add:
-
Path: 选择 /Root/Application/RTP.
- Name: 输入 audioPacketizerAAC.
- Type: 选择 String.
- Value: 输入 com.wowza.wms.rtp.packetizer.RTPPacketizerMPEG4LATM.
- 点击Save, 重启应用,让配置生效.
关于SDP的问题
有些IP摄像头无法在SDP数据中正确的发布H.264的
profile-level-id,这个可能会导致视频是空的或被损坏.
你可以在Wowza media server 添加
rtpIgnoreProfileLevelId参数来避免这个问题。
这时候,
profile-level-id的值不会用SDP中的数据,而是会采用
sprop-parameter-sets的值。
用Wowza Streaming Engine Manager 配置
-
在Wowza Streaming Engine Manager中点击Applications菜单中的直播应用名(例如live).
-
在直播应用主界面的Propertiestab页,点击Quick Links的Custom:
- 在Custom部分,点击Edit.
-
点击Add Custom Property, 在Add Custom Property对话框中,按如下配置,然后点击Add:
- Path - 选择 /Root/Application/RTP.
- Name - 输入 rtpIgnoreProfileLevelId.
- Type - 选择 Boolean.
- Value - 输入 true.
- 点击Save, 然后重启直播应用,让配置生效.
RTSP KeepAlive GET_PARAMETER
当Wowza向IP摄像头发送
GET_PARAMETER命令,用以保持连接时,有些IP摄像头需要Wowza发送
keepalive。
可以增加下面的参数来实现这个功能
rtspKeepAliveCommand.
用Wowza Streaming Engine Manager来配置
-
在Wowza Streaming Engine Manager, 点击Applications菜单的直播应用名(例如live).
- 在直播应用主界面的Propertiestab页,点击Quick Links的Custom
- 在Custom部分,点击Edit.
- 点击Add Custom Property, 在Add Custom Property对话框中,按如下配置,然后点击Add:
- Path - 选择 /Root/Application/MediaCaster.
- Name - 输入 rtspKeepAliveCommand.
- Type - 选择 String.
- Value - 输入 GET_PARAMETER.
- 点击Save, 重启直播应用,让配置生效.