Results 1 to 2 of 2

Thread: nDVR doesn't stream the last 10-15 seconds to an http flash client

  1. #1
    Join Date
    Dec 2012
    Posts
    3

    Default nDVR doesn't stream the last 10-15 seconds to an http flash client

    Hello,

    we've implemented RTMP push stream to Wowza nDVR plugin.

    At http://localhost:8086/streammanager we are starting a new "rtp-record" stream, start our streamer and all data chunks are flowing in.

    For about 1 munute video we have this manifest (dvrManifest_0000_00_00.txt) created in nDVR cache folder:

      <dvrEntry index="0" type="0" start="0" packetTime="0" utcTime="1371197919049" stop="0"  size="328" artifact="M-0000_00_00_000.m4fm"  metadata="AgAKb25NZXRhRGF0YQMACGR1cmF0aW9uAAAAAAAAAAAAAAV3aWR0aABAhAAAAAAAAAAGaGVpZ2h0
    AEB+AAAAAAAAAA12aWRlb2RhdGFyYXRlAECNfpQAAAAAAAlmcmFtZXJhdGUAQD34U+AAAAAADHZp
    ZGVvY29kZWNpZABAHAAAAAAAAAANYXVkaW9kYXRhcmF0ZQBAX0AAAAAAAAAPYXVkaW9zYW1wbGVy
    YXRlAEDncAAAAAAAAA9hdWRpb3NhbXBsZXNpemUAQDAAAAAAAAAABnN0ZXJlbwEBAAxhdWRpb2Nv
    ZGVjaWQAQGQAAAAAAAAAB2VuY29kZXICAAxWZGRtNFJ0bXAxLjAACGZpbGVzaXplAAAAAAAAAAAA
    AAAJ"  />
      <dvrEntry index="0" type="998" start="0" packetTime="0" utcTime="1371197919096" chunkIndex="0"   dvrTime="0"  />
      <dvrEntry index="0" type="9" start="0" packetTime="0" utcTime="1371197919096" stop="4004"  size="273600" artifact="V-0000_00_00_000.m4fv" />
      <dvrEntry index="0" type="8" start="0" packetTime="0" utcTime="1371197919096" stop="3970"  size="64703" artifact="A-0000_00_00_000.m4fa" />
      <dvrEntry index="0" type="999" start="0" packetTime="0" utcTime="1371197919096" aCodec="AgAAAAgAAAAKAAACCZAAALuAAAAAAgAABAAAAAAB" vCodec="AgAAAAkAAAAHAAAnAU0AH//hABhnTUAfllIBQHthahAAAD6QAA6mCdoUKRIBAARo62NSAAACgAAA
    AeAAAANoAAAB4AAAAE0AAAAfQD34UeuFHrg=" />
      <dvrEntry index="1" type="9" start="4004" packetTime="4004" utcTime="1371197927309" stop="8008"  size="199783" artifact="V-0000_00_04_004.m4fv" />
      <dvrEntry index="1" type="8" start="3971" packetTime="3971" utcTime="1371197927276" stop="8012"  size="65688" artifact="A-0000_00_03_971.m4fa" />
      <dvrEntry index="2" type="9" start="8008" packetTime="8008" utcTime="1371197935161" stop="12012"  size="258687" artifact="V-0000_00_08_008.m4fv" />
      <dvrEntry index="2" type="8" start="8011" packetTime="8011" utcTime="1371197935164" stop="11981"  size="64607" artifact="A-0000_00_08_011.m4fa" />
      <dvrEntry index="3" type="9" start="12012" packetTime="12012" utcTime="1371197938946" stop="16016"  size="246720" artifact="V-0000_00_12_012.m4fv" />
      <dvrEntry index="3" type="8" start="11981" packetTime="11981" utcTime="1371197938915" stop="16023"  size="66305" artifact="A-0000_00_11_981.m4fa" />
      <dvrEntry index="4" type="9" start="16016" packetTime="16016" utcTime="1371197942634" stop="20020"  size="274275" artifact="V-0000_00_16_016.m4fv" />
      <dvrEntry index="4" type="8" start="16022" packetTime="16022" utcTime="1371197942640" stop="19992"  size="65086" artifact="A-0000_00_16_022.m4fa" />
      <dvrEntry index="5" type="9" start="20020" packetTime="20020" utcTime="1371197946405" stop="21688"  size="145139" artifact="V-0000_00_20_020.m4fv" />
      <dvrEntry index="5" type="8" start="19992" packetTime="19992" utcTime="1371197946377" stop="21664"  size="27553" artifact="A-0000_00_19_992.m4fa" />
      <dvrEntry index="6" type="9" start="21688" packetTime="21688" utcTime="1371197947969" stop="25692"  size="207701" artifact="V-0000_00_21_688.m4fv" />
      <dvrEntry index="6" type="8" start="21664" packetTime="21664" utcTime="1371197947945" stop="25704"  size="66205" artifact="A-0000_00_21_664.m4fa" />
      <dvrEntry index="7" type="9" start="25692" packetTime="25692" utcTime="1371197951756" stop="29696"  size="214297" artifact="V-0000_00_25_692.m4fv" />
      <dvrEntry index="7" type="8" start="25704" packetTime="25704" utcTime="1371197951768" stop="29675"  size="64595" artifact="A-0000_00_25_704.m4fa" />
      <dvrEntry index="8" type="9" start="29696" packetTime="29696" utcTime="1371197955536" stop="33700"  size="217340" artifact="V-0000_00_29_696.m4fv" />
      <dvrEntry index="8" type="8" start="29675" packetTime="29675" utcTime="1371197955515" stop="33715"  size="65915" artifact="A-0000_00_29_675.m4fa" />
      <dvrEntry index="9" type="9" start="33700" packetTime="33700" utcTime="1371197959283" stop="37704"  size="238576" artifact="V-0000_00_33_700.m4fv" />
      <dvrEntry index="9" type="8" start="33715" packetTime="33715" utcTime="1371197959298" stop="37755"  size="65529" artifact="A-0000_00_33_715.m4fa" />
      <dvrEntry index="10" type="9" start="37704" packetTime="37704" utcTime="1371197963162" stop="41708"  size="271423" artifact="V-0000_00_37_704.m4fv" />
      <dvrEntry index="10" type="8" start="37756" packetTime="37756" utcTime="1371197963214" stop="41656"  size="64208" artifact="A-0000_00_37_756.m4fa" />
      <dvrEntry index="11" type="9" start="41708" packetTime="41708" utcTime="1371197967024" stop="45712"  size="267465" artifact="V-0000_00_41_708.m4fv" />
      <dvrEntry index="11" type="8" start="41657" packetTime="41657" utcTime="1371197966973" stop="45698"  size="66297" artifact="A-0000_00_41_657.m4fa" />
      <dvrEntry index="12" type="9" start="45712" packetTime="45712" utcTime="1371197970854" stop="49716"  size="237980" artifact="V-0000_00_45_712.m4fv" />
      <dvrEntry index="12" type="8" start="45697" packetTime="45697" utcTime="1371197970839" stop="49737"  size="65509" artifact="A-0000_00_45_697.m4fa" />
      <dvrEntry index="13" type="9" start="49716" packetTime="49716" utcTime="1371197974656" stop="53720"  size="231438" artifact="V-0000_00_49_716.m4fv" />
      <dvrEntry index="13" type="8" start="49737" packetTime="49737" utcTime="1371197974677" stop="53709"  size="65300" artifact="A-0000_00_49_737.m4fa" />
      <dvrEntry index="14" type="9" start="53720" packetTime="53720" utcTime="1371197977948" stop="57724"  size="210918" artifact="V-0000_00_53_720.m4fv" />
      <dvrEntry index="14" type="8" start="53708" packetTime="53708" utcTime="1371197977936" stop="57748"  size="66120" artifact="A-0000_00_53_708.m4fa" />
    While playing a video in Live Video Streaming | Flash HTTP player page at http://www.wowza.com/resources/3.6.0...er/player.html
    the live position is always a few entries behind the actual cache size and it stops at 45 seconds even if nDVR recorded up 58 seconds of actual data.

    What should be done to make those last seconds available to a flash client?

    Here is our application.xml file if it may help:

    <Root>
    	<Application>
    		<!-- Uncomment to set application level timeout values
    		<ApplicationTimeout>60000</ApplicationTimeout>
    		<PingTimeout>12000</PingTimeout>
    		<ValidationFrequency>8000</ValidationFrequency>
    		<MaximumPendingWriteBytes>0</MaximumPendingWriteBytes>
    		<MaximumSetBufferTime>60000</MaximumSetBufferTime>
    		<MaximumStorageDirDepth>25</MaximumStorageDirDepth>
    		-->
    		<Connections>
    			<AutoAccept>true</AutoAccept>
    			<AllowDomains></AllowDomains>
    		</Connections>
    		<!--
    			StorageDir path variables
    
    			${com.wowza.wms.AppHome} - Application home directory
    			${com.wowza.wms.ConfigHome} - Configuration home directory
    			${com.wowza.wms.context.VHost} - Virtual host name
    			${com.wowza.wms.context.VHostConfigHome} - Virtual host config directory
    			${com.wowza.wms.context.Application} - Application name
    			${com.wowza.wms.context.ApplicationInstance} - Application instance name
    		-->
    
    		<Streams>
    			<StreamType>live</StreamType>
    			<StorageDir>${com.wowza.wms.context.VHostConfigHome}/content</StorageDir>
    			<KeyDir>${com.wowza.wms.context.VHostConfigHome}/keys</KeyDir>
    			<!-- LiveStreamPacketizers (separate with commas): cupertinostreamingpacketizer, smoothstreamingpacketizer, sanjosestreamingpacketizer, cupertinostreamingrepeater, smoothstreamingrepeater, sanjosestreamingrepeater -->
    			<LiveStreamPacketizers>dvrstreamingpacketizer</LiveStreamPacketizers>
    			<!-- Properties defined here will override any properties defined in conf/Streams.xml for any streams types loaded by this application -->
    			<Properties>
    			</Properties>
    		</Streams>
    		<Transcoder>
    			<!-- To turn on transcoder set to: transcoder -->
    			<LiveStreamTranscoder></LiveStreamTranscoder>
    			<!-- [templatename].xml or ${SourceStreamName}.xml -->
    			<Templates>${SourceStreamName}.xml,transrate.xml</Templates>
    			<ProfileDir>${com.wowza.wms.context.VHostConfigHome}/transcoder/profiles</ProfileDir>
    			<TemplateDir>${com.wowza.wms.context.VHostConfigHome}/transcoder/templates</TemplateDir>
    			<Properties>
    			</Properties>
    		</Transcoder>
    
    		<DVR>
    			<!-- As a single server or as an origin, use dvrstreamingpacketizer in LiveStreamPacketizers above -->
    			<!-- Or, in an origin-edge configuration, edges use dvrstreamingrepeater in LiveStreamPacketizers above -->
    			<!-- As an origin, also add dvrchunkstreaming to HTTPStreamers below -->
    
    			<!-- To turn on DVR recording set Recorders to dvrrecorder.  This works with dvrstreamingpacketizer  -->
    			<Recorders>dvrrecorder</Recorders>
    
    			<!-- As a single server or as an origin, set the Store to dvrfilestorage-->
    			<!-- edges should have this empty -->
    			<Store>dvrfilestorage</Store>
    
    			<!--  Window Duration is length of live DVR window in seconds.  0 means the window is never trimmed. -->
    			<WindowDuration>0</WindowDuration>
    
    			<!-- Storage Directory is top level location where dvr is stored.  e.g. c:/temp/dvr -->
    			<StorageDir>${com.wowza.wms.context.VHostConfigHome}/dvr</StorageDir>
    
    			<!-- valid ArchiveStrategy values are append, version, delete -->
    			<ArchiveStrategy>append</ArchiveStrategy>
    
    			<!-- If this is a dvrstreamingrepeater, define ChunkOriginURL to point back to origin -->
    			<!-- And define Application/Repeater/OriginURL to point back to the origin -->
    			<Repeater>
    				<ChunkOriginURL></ChunkOriginURL>
    			</Repeater>
    
    			<!-- Properties for DVR -->
    			<Properties>
    			</Properties>
    		</DVR>
    
    		<TimedText>
    			<!-- VOD caption providers (separate with commas): vodcaptionproviderttml, vodcaptionprovidermp4_3gpp -->
    			<VODTimedTextProviders>vodcaptionprovidermp4_3gpp</VODTimedTextProviders>
    			
    			<!-- Properties for TimedText -->
    			<Properties>
    			</Properties>		
    		</TimedText>
    		
    		<!-- HTTPStreamers (separate with commas): cupertinostreaming, smoothstreaming, sanjosestreaming, dvrchunkstreaming -->
    		<HTTPStreamers>cupertinostreaming,smoothstreaming,sanjosestreaming</HTTPStreamers>	
    
    		<SharedObjects>
    			<StorageDir></StorageDir>
    		</SharedObjects>
    
    		<Client>
    			<IdleFrequency>-1</IdleFrequency>
    			<Access>
    				<StreamReadAccess>*</StreamReadAccess>
    				<StreamWriteAccess>*</StreamWriteAccess>
    				<StreamAudioSampleAccess></StreamAudioSampleAccess>
    				<StreamVideoSampleAccess></StreamVideoSampleAccess>
    				<SharedObjectReadAccess>*</SharedObjectReadAccess>
    				<SharedObjectWriteAccess>*</SharedObjectWriteAccess>
    			</Access>
    		</Client>
    		<RTP>
    			<!-- RTP/Authentication/[type]Methods defined in Authentication.xml. Default setup includes; none, basic, digest -->
    			<Authentication>
    				<PublishMethod>digest</PublishMethod>
    				<PlayMethod>none</PlayMethod>
    			</Authentication>
    			<!-- RTP/AVSyncMethod. Valid values are: senderreport, systemclock, rtptimecode -->
    			<AVSyncMethod>senderreport</AVSyncMethod>
    			<MaxRTCPWaitTime>12000</MaxRTCPWaitTime>
    			<IdleFrequency>75</IdleFrequency>
    			<RTSPSessionTimeout>90000</RTSPSessionTimeout>
    			<RTSPMaximumPendingWriteBytes>0</RTSPMaximumPendingWriteBytes>
    			<RTSPBindIpAddress></RTSPBindIpAddress>
    			<RTSPConnectionIpAddress>0.0.0.0</RTSPConnectionIpAddress>
    			<RTSPOriginIpAddress>127.0.0.1</RTSPOriginIpAddress>
    			<IncomingDatagramPortRanges>*</IncomingDatagramPortRanges>
    			<!-- Properties defined here will override any properties defined in conf/RTP.xml for any depacketizers loaded by this application -->
    			<Properties>
    			</Properties>
    		</RTP>
    
    		<MediaCaster>
    			<RTP>
    				<RTSP>
    					<!-- udp, interleave -->
    					<RTPTransportMode>interleave</RTPTransportMode>
    				</RTSP>
    			</RTP>
    			<!-- Properties defined here will override any properties defined in conf/MediaCasters.xml for any MediaCasters loaded by this applications -->
    			<Properties>
    			</Properties>
    		</MediaCaster>
    
    		<MediaReader>
    			<!-- Properties defined here will override any properties defined in conf/MediaReaders.xml for any MediaReaders loaded by this applications -->
    			<Properties>
    			</Properties>
    		</MediaReader>
    
    		<MediaWriter>
    			<!-- Properties defined here will override any properties defined in conf/MediaWriter.xml for any MediaWriter loaded by this applications -->
    			<Properties>
    			</Properties>
    		</MediaWriter>
    
    		<LiveStreamPacketizer>
    			<!-- Properties defined here will override any properties defined in conf/LiveStreamPacketizers.xml for any LiveStreamPacketizers loaded by this applications -->
    			<Properties>
    			</Properties>
    		</LiveStreamPacketizer>
    
    		<HTTPStreamer>
    			<!-- Properties defined here will override any properties defined in conf/HTTPStreamers.xml for any HTTPStreamer loaded by this applications -->
    			<Properties>
    			</Properties>
    		</HTTPStreamer>
    
    		<Repeater>
    			<OriginURL></OriginURL>
    			<QueryString><![CDATA[]]></QueryString>
    		</Repeater> 
    
    		<Modules>
    			<Module>
    				<Name>base</Name>
    				<Description>Base</Description>
    				<Class>com.wowza.wms.module.ModuleCore</Class>
    			</Module>
    			<Module>
    				<Name>properties</Name>
    				<Description>Properties</Description>
    				<Class>com.wowza.wms.module.ModuleProperties</Class>
    			</Module>
    			<Module>
    				<Name>logging</Name>
    				<Description>Client Logging</Description>
    				<Class>com.wowza.wms.module.ModuleClientLogging</Class>
    			</Module>
    			<Module>
    				<Name>flvplayback</Name>
    				<Description>FLVPlayback</Description>
    				<Class>com.wowza.wms.module.ModuleFLVPlayback</Class>
    			</Module> 
    		</Modules>
    		<!-- Properties defined here will be added to the IApplication.getProperties() and IApplicationInstance.getProperties() collections -->
    		<Properties>
    		</Properties>
    	</Application>
    </Root>
    UPDATE: Wowza Media Server 3.5.0

    Thanks
    Serge
    Last edited by skorolev; 06-14-2013 at 02:52 AM. Reason: forgot to mention Wowza version

  2. #2

    Default

    Hi Serge,

    Are you getting any warnings in the log messages?

    HTTP streaming has a latency of 3 chunks, which is why smaller key frame sizes are often recommended. Smaller key frame sizes result in more data in the playlist.
    If you're stream is ending inside that final 3 chuck window all that data will be dropped. You may need to adjust your frames per second and gop (key frame interval) of your incoming stream.

    Also, it may help if you add this property to the DVR properties in Application.xml and increase the value:

    dvrWaitForCodecTime
    Amount of time, in milliseconds (ms), that Wowza nDVR will wait to receive audio and video codec information after streaming has begun. The default value is 8000 ms.

         <Property>
              <Name>dvrWaitForCodecTime</Name>
              <Value>8000</Value>
              <Type>Integer</Type>
         </Property>
    Salvadore

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •