Results 1 to 2 of 2

Thread: [Problem] PlayReady error of live edge

  1. #1
    Join Date
    Feb 2014
    Posts
    5

    Default [Problem] PlayReady error of live edge

    Hi,

    In the origin/edge structure of live, it is encrypted with playready by origin server, and playback from the edge.
    But the following error.

    logs/wowzastreamingengine_error.log (of edge)
    ERROR   server  comment 2014-05-12      21:55:23        -       -       -       -       -       189478.27       -       -       -       -       -       -       -       -       SmoothStreamerLiveRepeaterReceiver.addVideoData[add:6:edge_live/_definst_/test_live:smoothstreamingpacketizer] : java.lang.IllegalArgumentException: Missing argument|at javax.crypto.spec.SecretKeySpec.<init>(SecretKeySpec.java:93)|at com.wowza.wms.drm.playready.PlayReadyEncryptor.init(PlayReadyEncryptor.java:106)|at com.wowza.wms.drm.playready.PlayReadyEncryptor.init(PlayReadyEncryptor.java:83)|at com.wowza.wms.httpstreamer.smoothstreaming.livestreampacketizer.LiveStreamPacketizerSmoothStreaming.setPlayReadKeyInfo(LiveStreamPacketizerSmoothStreaming.java:215)|at com.wowza.wms.httpstreamer.smoothstreaming.liverepeater.SmoothStreamerLiveRepeaterReceiver.addVideoData(SmoothStreamerLiveRepeaterReceiver.java:225)|

    Settings are as follows.


    <<Origin>>
    conf/origin_live/Application.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <Root version="1">
    	<Application>
    		<Name>origin_live</Name>
    		<AppType>Live</AppType>
    		<Description></Description>
    		<!-- 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, mpegdashstreamingpacketizer, cupertinostreamingrepeater, smoothstreamingrepeater, sanjosestreamingrepeater, mpegdashstreamingrepeater, dvrstreamingpacketizer, dvrstreamingrepeater -->
    			<LiveStreamPacketizers>cupertinostreamingpacketizer, smoothstreamingpacketizer</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 -->
    			<!-- If this is a dvrstreamingrepeater, define Application/Repeater/OriginURL to point back to the origin -->
    			<!-- To turn on DVR recording set Recorders to dvrrecorder.  This works with dvrstreamingpacketizer  -->
    			<Recorders></Recorders>
    			<!-- As a single server or as an origin, set the Store to dvrfilestorage-->
    			<!-- edges should have this empty -->
    			<Store></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>
    			<!-- Properties for DVR -->
    			<Properties>
    			</Properties>
    		</DVR>
    		<TimedText>
    			<!-- VOD caption providers (separate with commas): vodcaptionprovidermp4_3gpp, vodcaptionproviderttml, vodcaptionproviderwebvtt,  vodcaptionprovidersrt, vodcaptionproviderscc -->
    			<VODTimedTextProviders></VODTimedTextProviders>
    			<!-- Properties for TimedText -->
    			<Properties>
    			</Properties>
    		</TimedText>
    		<!-- HTTPStreamers (separate with commas): cupertinostreaming, smoothstreaming, sanjosestreaming, mpegdashstreaming, dvrchunkstreaming -->
    		<HTTPStreamers>cupertinostreaming, smoothstreaming</HTTPStreamers>
    		<MediaCache>
    			<MediaCacheSourceList></MediaCacheSourceList>
    		</MediaCache>
    		<SharedObjects>
    			<StorageDir>${com.wowza.wms.context.VHostConfigHome}/applications/${com.wowza.wms.context.Application}/sharedobjects/${com.wowza.wms.context.ApplicationInstance}</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>block</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>
    			<StreamValidator>
    				<Enable>true</Enable>
    				<ResetNameGroups>true</ResetNameGroups>
    				<StreamStartTimeout>20000</StreamStartTimeout>
    				<StreamTimeout>12000</StreamTimeout>
    				<VideoStartTimeout>0</VideoStartTimeout>
    				<VideoTimeout>0</VideoTimeout>
    				<AudioStartTimeout>0</AudioStartTimeout>
    				<AudioTimeout>0</AudioTimeout>
    				<VideoTCToleranceEnable>false</VideoTCToleranceEnable>
    				<VideoTCPosTolerance>3000</VideoTCPosTolerance>
    				<VideoTCNegTolerance>-500</VideoTCNegTolerance>
    				<AudioTCToleranceEnable>false</AudioTCToleranceEnable>
    				<AudioTCPosTolerance>3000</AudioTCPosTolerance>
    				<AudioTCNegTolerance>-500</AudioTCNegTolerance>
    				<DataTCToleranceEnable>false</DataTCToleranceEnable>
    				<DataTCPosTolerance>3000</DataTCPosTolerance>
    				<DataTCNegTolerance>-500</DataTCNegTolerance>
    				<AVSyncToleranceEnable>false</AVSyncToleranceEnable>
    				<AVSyncTolerance>1500</AVSyncTolerance>
    				<DebugLog>false</DebugLog>
    			</StreamValidator>
    			<!-- 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>
    		<Manager>
    			<!-- Properties defined are used by the Manager -->
    			<Properties>
    			</Properties>
    		</Manager>
    		<Repeater>
    			<OriginURL></OriginURL>
    			<QueryString><![CDATA[]]></QueryString>
    		</Repeater>
    		<StreamRecorder>
    			<Properties>
    			</Properties>
    		</StreamRecorder>
    		<Modules>
    			<Module>
    				<Name>base</Name>
    				<Description>Base</Description>
    				<Class>com.wowza.wms.module.ModuleCore</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>
    keys/test_live.key
    smoothstreaming-playready-key-id: F6005DCF-7F93-4B8E-85C7-F977740DA059
    smoothstreaming-playready-license-url: http://myplayreadyserver.com/authenticate.aspx
    smoothstreaming-playready-content-key: Tc2cQBPC/paTkftvaITCSQ==
    smoothstreaming-playready-checksum: vbxgstjfSQY=
    smoothstreaming-playready-algorithm: AESCTR
    <<Edge>>
    conf/edge_live/Application.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <Root version="1">
    	<Application>
    		<Name>edge_live</Name>
    		<AppType>LiveEdge</AppType>
    		<Description></Description>
    		<!-- 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>liverepeater-edge</StreamType>
    			<StorageDir>${com.wowza.wms.context.VHostConfigHome}/content</StorageDir>
    			<KeyDir>${com.wowza.wms.context.VHostConfigHome}/keys</KeyDir>
    			<!-- LiveStreamPacketizers (separate with commas): cupertinostreamingpacketizer, smoothstreamingpacketizer, sanjosestreamingpacketizer, mpegdashstreamingpacketizer, cupertinostreamingrepeater, smoothstreamingrepeater, sanjosestreamingrepeater, mpegdashstreamingrepeater, dvrstreamingpacketizer, dvrstreamingrepeater -->
    			<LiveStreamPacketizers>cupertinostreamingrepeater, smoothstreamingrepeater</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 -->
    			<!-- If this is a dvrstreamingrepeater, define Application/Repeater/OriginURL to point back to the origin -->
    			<!-- To turn on DVR recording set Recorders to dvrrecorder.  This works with dvrstreamingpacketizer  -->
    			<Recorders></Recorders>
    			<!-- As a single server or as an origin, set the Store to dvrfilestorage-->
    			<!-- edges should have this empty -->
    			<Store></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>
    			<!-- Properties for DVR -->
    			<Properties>
    			</Properties>
    		</DVR>
    		<TimedText>
    			<!-- VOD caption providers (separate with commas): vodcaptionprovidermp4_3gpp, vodcaptionproviderttml, vodcaptionproviderwebvtt,  vodcaptionprovidersrt, vodcaptionproviderscc -->
    			<VODTimedTextProviders></VODTimedTextProviders>
    			<!-- Properties for TimedText -->
    			<Properties>
    			</Properties>
    		</TimedText>
    		<!-- HTTPStreamers (separate with commas): cupertinostreaming, smoothstreaming, sanjosestreaming, mpegdashstreaming, dvrchunkstreaming -->
    		<HTTPStreamers>cupertinostreaming, smoothstreaming</HTTPStreamers>
    		<MediaCache>
    			<MediaCacheSourceList></MediaCacheSourceList>
    		</MediaCache>
    		<SharedObjects>
    			<StorageDir>${com.wowza.wms.context.VHostConfigHome}/applications/${com.wowza.wms.context.Application}/sharedobjects/${com.wowza.wms.context.ApplicationInstance}</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>block</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>
    			<StreamValidator>
    				<Enable>true</Enable>
    				<ResetNameGroups>true</ResetNameGroups>
    				<StreamStartTimeout>20000</StreamStartTimeout>
    				<StreamTimeout>12000</StreamTimeout>
    				<VideoStartTimeout>0</VideoStartTimeout>
    				<VideoTimeout>0</VideoTimeout>
    				<AudioStartTimeout>0</AudioStartTimeout>
    				<AudioTimeout>0</AudioTimeout>
    				<VideoTCToleranceEnable>false</VideoTCToleranceEnable>
    				<VideoTCPosTolerance>3000</VideoTCPosTolerance>
    				<VideoTCNegTolerance>-500</VideoTCNegTolerance>
    				<AudioTCToleranceEnable>false</AudioTCToleranceEnable>
    				<AudioTCPosTolerance>3000</AudioTCPosTolerance>
    				<AudioTCNegTolerance>-500</AudioTCNegTolerance>
    				<DataTCToleranceEnable>false</DataTCToleranceEnable>
    				<DataTCPosTolerance>3000</DataTCPosTolerance>
    				<DataTCNegTolerance>-500</DataTCNegTolerance>
    				<AVSyncToleranceEnable>false</AVSyncToleranceEnable>
    				<AVSyncTolerance>1500</AVSyncTolerance>
    				<DebugLog>false</DebugLog>
    			</StreamValidator>
    			<!-- 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>
    		<Manager>
    			<!-- Properties defined are used by the Manager -->
    			<Properties>
    			</Properties>
    		</Manager>
    		<Repeater>
    			<OriginURL>wowz://originexample.com:1935/origin_live</OriginURL>
    			<QueryString><![CDATA[]]></QueryString>
    		</Repeater>
    		<StreamRecorder>
    			<Properties>
    			</Properties>
    		</StreamRecorder>
    		<Modules>
    			<Module>
    				<Name>base</Name>
    				<Description>Base</Description>
    				<Class>com.wowza.wms.module.ModuleCore</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>
    			<Module>
    				<Name>ModuleCoreSecurity</Name>
    				<Description>Core Security Module for Applications</Description>
    				<Class>com.wowza.wms.security.ModuleCoreSecurity</Class>
    			</Module>
    		</Modules>
    		<!-- Properties defined here will be added to the IApplication.getProperties() and IApplicationInstance.getProperties() collections -->
    		<Properties>
    			<Property>
    				<Name>securityPublishRequirePassword</Name>
    				<Value>true</Value>
    				<Type>Boolean</Type>
    			</Property>
    		</Properties>
    	</Application>
    </Root>
    <<URL>>
    http://edgeexample.com:1935/edge_liv..._live/Manifest


    Please tell me the solution strategy.

    Thanks in advance.

  2. #2
    Join Date
    Dec 2007
    Posts
    22,013

    Default

    I don't see the playready module in place on the origin as shown in this guide

    Richard

Similar Threads

  1. Problem with On-The-Fly PlayReady Encryption
    By weichung in forum General Forum
    Replies: 13
    Last Post: 07-18-2014, 10:47 AM
  2. Replies: 4
    Last Post: 12-05-2011, 08:05 AM

Posting Permissions

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