如何开始一个VOD点播?内容文件存放在哪个目录?
转载请注明:文章来自www.wowza.cn
注意: 要访问最新的技术资料,请访问http://www.ttstream.com/wowza/

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



介绍如下:





配置


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

注意:从Wowza Media Server 3.0.0版本开始,安装完成后,系统就已经包含了一个名字为vod的预先定义好的应用。

  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设置为:
      Code:
      <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即可。 www.wowza.cn

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上播放。

Microsoft Silverlight (Smooth Streaming)


从Wowza Media Server 3.5.0开始, 已经包含一个支持Microsoft Silverlight的网页播放器[install-dir]/examples/VideoOnDemandStreaming/SilverlightPlayer/player.html,打开这个网页,输入下面的播放信息,然后点击Connect按钮。

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

要从远程播放,请将SilverlightPlayer文件下拷贝到一个web服务器上, 访问http://<webserver>/SilverlightPlayer/player.html即可。

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


Adobe Flash 播放器(San Jose/Adobe HDS)

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


Apple iOS 设备 (Cupertino/Apple HLS)

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


Microsoft Silverlight (Smooth Streaming)

Stream: http://[wowza-ip-address]:1935/vod/_definst_/mp4:myvideos/sample.mp4/Manifest


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>
    
www.wowza.cn
你可以看到在<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>
    
注意:当使用Adobe HDS (San Jose)或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进行了正确的编码,并且是关键帧对齐。

Adobe Flash 播放器(San Jose/Adobe HDS)


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

Stream: http://[wowza-ip-address]:1935/vod/smil:bigbuckbunny.smil/manifest.f4m

Apple iOS 设备(Cupertino/Apple HLS)


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

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

Microsoft Silverlight (Smooth Streaming)


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

Stream: http://[wowza-ip-address]:1935/vod/smil:bigbuckbunny.smil/Manifest


默认状态下,Microsoft Smooth Streaming 会通过检测内容流,自己来动态的计算视频和音频的码率。 如果你希望Wowza Media Server使用SMIL文件中的码率,你需要在[install-dir]/conf/[application]/Application.xml文件中为HTTPStreamer/Properties 添加如下的一个属性(请确认要添加到正确的Properties属性组中):
Code:
<Property>
    <Name>smoothStreamingUseSMILBitrates</Name>
    <Value>true</Value>
    <Type>Boolean</Type>
</Property>
当你在这个模式下运行时,Wowza Media Server将假定视频和音频的system-bitrate 数值仅仅是视频和音频数据(净载荷)。

Adobe Flash Player (RTMP)


在Adobe Flash中实现码率自适应需要在客户端做一些工作,下面的文章详细介绍了如何在Flash中实现码率自适应:

Dynamic streaming in Flash (part 1)
Dynamic streaming in Flash (part 2)
Dynamic streaming in Flash (part 3)

当你用Wowza Media Server使用Adobe HTTP Dynamic Streaming (Adobe HDS)时,最好打开dynamic stream markers, 它会提供更精确的动态码率计算(在大部分场景下)。 要打开dynamic stream markers, 请编辑[install-dir]/conf/[application]/Application.xml 并在Streams/Properties 中添加以下属性:
Code:
<Property>
    <Name>enableDynamicStreamMarkers</Name>
    <Value>true</Value>
    <Type>Boolean</Type>
</Property>
注意:在Wowza Media Server 2.2.0 及以后的版本中Dynamic stream markers被默认设为打开状态。

故障排查



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):
Code:
<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中增加如下的参数:
Code:
<Property>
    <Name>audioPacketizerAAC</Name>
    <Value>com.wowza.wms.rtp.packetizer.RTPPacketizerMPEG4LATM</Value>
</Property>