多协议、性能稳定、丰富API的流媒体服务器软件
如何开始一个VOD点播?内容文件存放在哪个目录?

这篇文章介绍了用Wowza Stream Engine 4 搭建一个VOD点播业务的基本步骤。



介绍如下:





配置


这里介绍了如何建立一个VOD应用,以及如何配置Application.xml。这里使用的例子视频文件为[install-dir]/content/sample.mp4

  1. 创建一个应用文件夹[install-dir]/applications/vod.

  2. 创建一个配置文件夹[install-dir]/conf/vod,将[install-dir]/conf/Application.xml拷贝到这个新的文件夹下。

  3. 编辑这个新的Application.xml文件,按以下说明对配置进行修改(说明:一些设置可能已经是下面的配置了,就不用修改了):

    1. Streams/StreamType设置为:
      <StreamType>default</StreamType>
      			    
    2. HTTPStreamers设置:
      <HTTPStreamers>cupertinostreaming,smoothstreaming,sanjosestreaming</HTTPStreamers>
      			    
    3. RTP/Authentication/PlayMethod设置为:
      <PlayMethod>none</PlayMethod>
      			    

  4. 启动Wowza Stream Engine 4。


内容存储


Wowza Stream Engine 4被默认配置为使用一个内容目录,位于[install-dir]/content。你可以修改Application.xml文件中的Streams/StorageDir属性,将一个应用的默认内容存储位置调整为你所希望的目录。

另外,如果你在linux下运行wowza Stream Engine 4,你也可以在[install-dir]/content下创建一个软链接,指向你真实的内容存放路径。
注意:这时,你的播放url中的streamName前要加上路径名,例如mp4:somelinkpath/somefile.mp4

播放


注意: 在下面的例子中, [wowza-ip-address]是指运行Wowza Stream Engine 4的服务器IP地址或域名。

注意: 要播放你的视频内容文件,请把文件拷贝到[install-dir]/content 文件夹下,用它的文件名替代下面例子URl中的sample.mp4

在Adobe Flash Player中采用RTMP播放


从Wowza Media Server 3.5.0开始, 已经包含了一个支持RTMP协议的Flash播放器以及网页[install-dir]/examples/VideoOnDemandStreaming/FlashRTMPPlayer/player.html, 用浏览器打开这个网页,输入下面的播放信息,然后点击Connect 按钮。

Server: rtmp://[wowza-ip-address]/vod
Stream: mp4:sample.mp4

要从远程播放这个视频,你只要将FlashRTMPPlayer文件夹拷贝到一个web服务器上,然后用浏览器访问http://<webserver>/FlashRTMPPlayer/player.html即可。

Adobe Flash Player (San Jose/Adobe HDS)


从In Wowza Media Server 3.5.0开始,已经包含了一个支持HDS协议的Flash播放器以及网页[install-dir]/examples/VideoOnDemandStreaming/FlashHTTPPlayer/player.html,用浏览器打开这个网页,输入下面的播放信息,然后点击Connect按钮。

Stream: http://[wowza-ip-address]:1935/vod/mp4:sample.mp4/manifest.f4m

要从远程播放这个视频,你只要将FlashHTTPPlayer文件下拷贝到一个Web服务器上,然后用浏览器访问http://<webserver>/FlashHTTPPlayer/player.html即可。

Apple iOS 设备 (Cupertino/Apple HLS)


在Apple IOS设备上打开Safari® 浏览器,输入下面的URL:

URL: http://[wowza-ip-address]:1935/vod/mp4:sample.mp4/playlist.m3u8

注意: 在Apple® iPhone® 3GS (以及更早的版本) 以及iPod touch® 设备上,待播放的内容文件需要采用H.264(Baseline profile level 3 或更低版本)视频编码格式以及AAC或MP3立体声音频编码格式。

注意: 这个是视频流也可以同样在运行Mac OS® X Snow Leopard 10.6版或更新版本的电脑上使用Safari浏览器或QuickTime 10.x上播放。

RTSP/RTP 播放器


在RTSP/RTP播放器中,输入下面的URL:

URL: rtsp://[wowza-ip-address]:1935/vod/mp4:sample.mp4

播放content根目录外的文件


如果要播放一个不在content根目录([install-dir]/content)下的文件,你必须在播放URL中加上默认的应用实例(application instance)名称。举例说明, 如果sample.mp4变为[install-dir]/content/myvideos/sample.mp4,那么针对不同播放协议的播放URL为:

Adobe Flash 播放器(RTMP)

Server: rtmp://[wowza-ip-address]/vod
Stream: mp4:myvideos/sample.mp4

完整独立的URL: rtmp://[wowza-ip-address]/vod/_definst_/mp4:myvideos/sample.mp4


Apple iOS 设备 (Cupertino/Apple HLS)

URL: http://[wowza-ip-address]:1935/vod/_definst_/mp4:myvideos/sample.mp4/playlist.m3u8


RTSP/RTP 播放器

URL: rtsp://[wowza-address]:1935/vod/_definst_/mp4:myvideos/sample.mp4

码率自适应


如果你要在Adobe® Flash® 播放器、Apple iOS 设备以及Microsoft Silverlight播放器上使用码率自适应(ABR)流媒体点播技术,首先你需要将每一个内容文件预先编码为不同码率的多个文件。为了实现正常的流切换,多个不同码率的视频文件在编码时关键帧必须对齐。这要求在编码时多个不同码率文件的关键帧间隔以及帧率必须保持一致。 当你的内容文件经过了正确的编码之后,将他们拷贝[install-dir]/content文件下,并创建一个Synchronized Multimedia Integration Language (SMIL)文件,将不同码率的文件组合起来。

举个例子,假如将一个视频内容编码为4个不同码率的视频文件:

  • bigbuckbunny_450.mp4 (450kbps total bitrate)
  • bigbuckbunny_750.mp4 (750kbps total bitrate)
  • bigbuckbunny_1100.mp4 (1100kbps total bitrate)
  • bigbuckbunny_1500.mp4 (1500kbps total bitrate)

请使用一个文本编辑器创建一个SMIL文件,命名为bigbuckbunny.smil,将它放在[install-dir]/content文件夹下:
<smil>
    <head>
    </head>
    <body>
        <switch>
            <video src="mp4:bigbuckbunny_450.mp4" system-bitrate="450000"/>
            <video src="mp4:bigbuckbunny_750.mp4" system-bitrate="750000"/>
            <video src="mp4:bigbuckbunny_1100.mp4" system-bitrate="1100000"/>
            <video src="mp4:bigbuckbunny_1500.mp4" system-bitrate="1500000"/>
        </switch>
    </body>
</smil>
          
你可以看到在<switch>中包含的<video>实体代表了一个不同码率的待播放的文件。system-bitrate的数值代表了包括视频和音频在内的总码率(in bits-per-second)。

Microsoft Smooth Streaming 将仅仅在视频部分切换不同码率文件,而对于音频部分,只会使用<switch>列表中的第一个文件。 如果你希望使用的音频不是列表中的第一个文件,你可以为这个音频在<switch>中添加一个<audio>实体,例如:
<smil>
    <head>
    </head>
    <body>
        <switch>
            <video src="mp4:bigbuckbunny_450.mp4" system-bitrate="450000"/>
            <video src="mp4:bigbuckbunny_750.mp4" system-bitrate="750000"/>
            <video src="mp4:bigbuckbunny_1100.mp4" system-bitrate="1100000"/>
            <video src="mp4:bigbuckbunny_1500.mp4" system-bitrate="1500000"/>
            <audio src="mp4:bigbuckbunny_1500.mp4" system-bitrate="128000"/>
        </switch>
    </body>
</smil>
        
注意:当使用Apple HLS (Cupertino) 流媒体协议时,<audio> 的配置将被忽略。

注意: JW Player™ 和 Flowplayer 使用client-side XML文件来定义不同的码率文件,而不是使用本文介绍的server-side SMIL 文件。 它们都使用BWCheck module.

你可以通过以下连接下载本文介绍的这些SMIL文件和视频文件:

H.264 Main profile
http://www.wowzamedia.com/_h264/bigbuckbunny.smil
http://www.wowzamedia.com/_h264/bigbuckbunny_450.mp4
http://www.wowzamedia.com/_h264/bigbuckbunny_750.mp4
http://www.wowzamedia.com/_h264/bigbuckbunny_1100.mp4
http://www.wowzamedia.com/_h264/bigbuckbunny_1500.mp4

针对移动流媒体场景下更低码率(H.264 Baseline profile - iPhone 以及 iPod touch 等兼容设备):
http://www.wowzamedia.com/_h264/bigbuckbunnyiphone.smil
http://www.wowzamedia.com/_h264/bigb...iphone_300.mp4
http://www.wowzamedia.com/_h264/bigb...iphone_400.mp4
http://www.wowzamedia.com/_h264/bigb...iphone_600.mp4

这些不同码率的例子视频文件都是使用Microsoft Expression Encoder 4进行了正确的编码,并且是关键帧对齐。

Apple iOS 设备(Cupertino/Apple HLS)


在终端的Safari浏览器上,输入如下URL:

URL: http://[wowza-ip-address]:1935/vod/smil:bigbuckbunny.smil/playlist.m3u8

故障排查



RTSP/RTP


  • RTSP/RTP 被用于向Android™ 和 BlackBerry® 移动终端传输流媒体。当然,较新的基于Android的手机也都支持Flash player 10.1或更高版本以及RTMP和Adobe HTTP Dynamic Streaming (Adobe HDS)。

  • 使用RTSP/RTP时,请确认Wowza Media Server的UDP端口0-65535是打开的。

  • 按照如何对RTSP/RTP播放进行故障排查上的指导进行正确的配置是非常重要的。


面向机顶盒终端,强制输出MPEG-TS流


当使用RTSP/RTP流媒体时,你可以通过在[install-dir]/conf/[application]/Application.xml文件的RTP/Properties中增加如下属性参数,用以针对机顶盒终端强制输出MPEG-TS流(因为大部分机顶盒都需要输入流是MPEG-TS):
<Property>
    <Name>forceMPEGTSOut</Name>
    <Value>true</Value>
    <Type>Boolean</Type>
</Property>
<Property>
    <Name>rtpWrapMPEGTS</Name>
    <Value>true</Value>
    <Type>Boolean</Type>
</Property>

调整AAC封装方式的参数


Wowza Media Server 可以采用mpeg4-genericmp4a-latm (3gpp)两种封装方式输出AAC音频流。 默认的封装方式为mpeg4-generic。要切换到mp4a-latm (3gpp), 你需要在[install-dir]/[application]/Application.xml文件的RTP/Properties中增加如下的参数:
<Property>
    <Name>audioPacketizerAAC</Name>
    <Value>com.wowza.wms.rtp.packetizer.RTPPacketizerMPEG4LATM</Value>
</Property>