多协议、性能稳定、丰富API的流媒体服务器软件
如何从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 菜单,如下图所示:

    wowza

  • 2、在 Server 界面左侧导航菜单中找到 Stream Files 菜单,点击 Stream Files菜单,然后再点击主界面上的Add Stream File按钮,如下图所示:

    wowza

  • Add Stream File对话框,输入这个流的名字,然后输入Stream URI,然后点击Add.

    Wowza Streaming Engine

    这里就是要填入你的IP摄像头输出流的RTSP地址。 Stream URI. 要了解更多,请阅读常见IP摄像头的URL格式.


  • 然后,启动这个流:

    1. Server菜单,点击Stream Files, 然后点击你在上一步创建的stream 文件右侧的Connect图标。

      Wowza Streaming Engine

    2. Connect a Stream File对话框,在Application Name中选择live,在MediaCaster Type中选择rtp,然后点击OK.

      Wowza Streaming Engine

    3. The 之后界面会提示你Connection successful

      Wowza Streaming Engine
  • 常见摄像头的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:

    1. 打开VLC播放器.

    2. Media菜单,点击Open Network Stream, 输入你的摄像头RTSP url,然后点击Play.

    3. 当流开始正常播放时,在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


    1. 用文本编辑器打开你的应用的[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来配置

    1. 在Wowza Streaming Engine Manager界面,点击顶部的Applications菜单,然后点击你的应用名子(例如live).

    2. 在应用的主界面的PropertiesTAB页,在Quick Links导航中点击Custom.

    3. Custom部分,点击Edit.

    4. 点击Add Custom Property, 在Add Custom Property对话框中,按如下设置,然后点击Add:

      • Path - 选择 /Root/Application/MediaCaster.

      • Name - 输入 rtspValidationFrequency.

      • Type - 选择 Integer.

      • Value - 输入 0. 单位是毫秒,设置为0表示关掉这个参数

    5. 点击 Save, 重启直播应用,让配置生效

    rtspFilterUnknownTracks


    有些IP摄像头的RTSP输出流中会增加一些Wowza 无法识别的应用数据. 你可以用rtspFilterUnknownTracks参数来过滤掉这些轨道。

    用Wowza Streaming Engine Manager来配置

    1. 在Wowza Streaming Engine Manager管理界面,点击Applications,在点击你的直播应用(例如live).

    2. 在应用主界面的Propertiestab页,点击Quick Links导航中的Custom.
    3. In the Custom area, click Edit.

    4. 点击Add Custom Property, 在Add Custom Property对话框,按如下填写,然后点击Add:

      • Path - 选择 /Root/Application/MediaCaster.

      • Name - 输入 rtspFilterUnknownTracks.

      • Type - 选择 Boolean

      • Value - 输入 true.

    5. 点击Save,然后重启应用,让配置生效

    你可以屏蔽掉音频或视频轨道

    你可以添加rtspStreamAudioTrackrtspStreamVideoTrack的参数来屏蔽掉音频或视频。

    用Wowza Streaming Engine Manager 来配置


    1. 在Wowza Streaming Engine Manager点击Applications菜单直播应用例如(live)

    2. 在应用的主界面的Propertiestab页,点击Quick Links导航条Custom

    3. Custom部分,点击Edit.

    4. 点击Add Custom Property, 在Add Custom Property对话框中,按下面配置,然后点击Add:

      • Path - 选择 /Root/Application/MediaCaster.

      • Name - 输入 rtspStreamAudioTrack.

      • Type - 选择 Boolean.

      • Value - 输入 false.

    5. 重复前面的步骤,按下面的配置,添加rtspStreamVideoTrack 参数:

      • Path - 选择 /Root/Application/MediaCaster.

      • Name - 输入 rtspStreamVideoTrack.

      • Type - 选择 Boolean.

      • Value - 输入 false.

    6. 点击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来配置


    1. 在Wowza Streaming Engine Manager,点击Applications菜单的直播应用(例如live).

    2. 在应用主界面的Propertiestab页,点击Quick Links导航的Custom

    3. Custom部分,点击Edit.

    4. 点击Add Custom Property, 在Add Custom Property对话框中,按如下配置,然后点击Add:

      • Path - 选择 /Root/Application/MediaCaster.

      • Name - 输入 rtspDefaultAudioRTPMap.

      • Type - 选择 String.

      • Value - 输入 PCMU/8000.

    5. 点击 Save, 然后重启应用,让配置生效

    输出RTSP的debug日志

    你可以把Wowza服务器和IP摄像头(RTSP源)之间的信令交互过程的输出到日志中,只要添加debugRTSPSession参数即可实现.

    用Wowza Streaming Engine Manager 来配置


    1. 在Wowza Streaming Engine Manager,点击Applications菜单的直播应用(例如live)

    2. 在应用主界面的Propertiestab页,点击Quick Links导航的Custom

    3. Custom部分,点击Edit.

    4. 点击Add Custom Property, 在Add Custom Property对话框,按如下填写,然后点击Add:

      • Path - 选择 /Root/Application/MediaCaster.

      • Name - 输入 debugRTSPSession.

      • Type - 选择 Boolean.

      • Value - 输入 true.

    5. 点击 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-genericmp4a-latm (3gpp) 两种AAC音频的封包格式。默认使用mpeg4-generic.

    用Wowza Streaming Engine Manager来配置


    要调整为mp4a-latm (3gpp), 按如下配置:

    1. 在Wowza Streaming Engine Manager上,点击Applications菜单上的直播应用名(例如live)

    2. 在应用主界面的Propertiestab页,点击b>Quick Links的Custom

    3. Custom部分, 点击Edit.

    4. 点击Add Custom Property, 在Add Custom Property对话框,按如下配置,然后点击Add:

      • Path: 选择 /Root/Application/RTP.

      • Name: 输入 audioPacketizerAAC.

      • Type: 选择 String.

      • Value: 输入 com.wowza.wms.rtp.packetizer.RTPPacketizerMPEG4LATM.

    5. 点击Save, 重启应用,让配置生效.


    关于SDP的问题

    有些IP摄像头无法在SDP数据中正确的发布H.264的profile-level-id,这个可能会导致视频是空的或被损坏. 你可以在Wowza media server 添加rtpIgnoreProfileLevelId参数来避免这个问题。 这时候,profile-level-id的值不会用SDP中的数据,而是会采用sprop-parameter-sets的值。

    用Wowza Streaming Engine Manager 配置


    1. 在Wowza Streaming Engine Manager中点击Applications菜单中的直播应用名(例如live).

    2. 在直播应用主界面的Propertiestab页,点击Quick LinksCustom

    3. Custom部分,点击Edit.

    4. 点击Add Custom Property, 在Add Custom Property对话框中,按如下配置,然后点击Add:

      • Path - 选择 /Root/Application/RTP.

      • Name - 输入 rtpIgnoreProfileLevelId.

      • Type - 选择 Boolean.

      • Value - 输入 true.

    5. 点击Save, 然后重启直播应用,让配置生效.

    RTSP KeepAlive GET_PARAMETER

    当Wowza向IP摄像头发送GET_PARAMETER命令,用以保持连接时,有些IP摄像头需要Wowza发送keepalive。 可以增加下面的参数来实现这个功能rtspKeepAliveCommand.

    用Wowza Streaming Engine Manager来配置


    1. 在Wowza Streaming Engine Manager, 点击Applications菜单的直播应用名(例如live).

    2. 在直播应用主界面的Propertiestab页,点击Quick LinksCustom

    3. Custom部分,点击Edit.

    4. 点击Add Custom Property, 在Add Custom Property对话框中,按如下配置,然后点击Add:

      • Path - 选择 /Root/Application/MediaCaster.

      • Name - 输入 rtspKeepAliveCommand.

      • Type - 选择 String.

      • Value - 输入 GET_PARAMETER.

    5. 点击Save, 重启直播应用,让配置生效.