媒体MediaPlayer错误详细解析

来源:互联网 发布:单片机正弦波 编辑:程序博客网 时间:2024/05/19 09:50
Android的MediaPlayer错误[转载] 
2011年09月01日 
  重要提醒:系统检测到您的帐号可能存在被盗风险,请尽快查看风险提示,并立即修改密码。  |  关闭 
  网易博客安全提醒:系统检测到您当前密码的安全性较低,为了您的账号安全,建议您适时修改密码    立即修改  |  关闭 
  在使用MediaPlayer的时候,要注意几个Listener的配合使用,但是,MediaPlayer还是会经常报些奇怪的错误信息。 
  通常这些错误都是由数据源或者调用MediaPlayer中的方法时没有注意MediaPlayer的状态而引起。 
  常见错误信息分析: 
  (-38,0) 
  一般是由于在MediaPlayer还没有Prepared的状态下调用了类似getDuration()之类的方法而引起, 
  例如报错:Attempt to call getDuration without a valid mediaplayer 
  以下是MediaPlayer的错误类型源码: /* -------------------------------------------------- ---------------- 
  * Copyright (C) 1998-2010 PacketVideo 
  * 
  * Licensed under the Apache License, Version 2.0 (the "License"); 
  * you may not use this file except in compliance with the License. 
  * You may obtain a copy of the License at 
  * 
  *      http://www.apache.org/licenses/LICENSE-2.0 
  * 
  * Unless required by applicable law or agreed to in writing, software 
  * distributed under the License is distributed on an "AS IS" BASIS, 
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
  * express or implied. 
  * See the License for the specific language governing permissions 
  * and limitations under the License. 
  * -------------------------------------------------- ----------------- 
  */ 
  /** 
  *  @file pv_return_codes.h 
  *  @brief This file defines the general return and event codes to be used by PVMF elements. 
  *         Theses base-level codes are unique. Error codes are negative values and informational 
  *         codes are positive values. 
  *  NOTE: If you add any new event, update the PVMFStatusToString method as well. 
  */ 
  // Return codes 
  /* 
  Return code for general success 
  */ 
  const PVMFStatus PVMFSuccess = 1; 
  /* 
  Return code for pending completion 
  */ 
  const PVMFStatus PVMFPending = 0; 
  /* 
  Return code for never set 
  */ 
  const PVMFStatus PVMFNotSet = 2; 
  /* 
  Return code for Command Complete 
  */ 
  const PVMFStatus PVMFCmdCompleted = 3; 
  /* 
  Definition of first error event in range (not an actual error code). 
  */ 
  const PVMFStatus PVMFErrFirst = (-1); 
  /* 
  Return code for general failure 
  */ 
  const PVMFStatus PVMFFailure = (-1); 
  /* 
  Error due to cancellation 
  */ 
  const PVMFStatus PVMFErrCancelled = (-2); 
  /* 
  Error due to no memory being available 
  */ 
  const PVMFStatus PVMFErrNoMemory = (-3); 
  /* 
  Error due to request not being supported 
  */ 
  const PVMFStatus PVMFErrNotSupported = (-4); 
  /* 
  Error due to invalid argument 
  */ 
  const PVMFStatus PVMFErrArgument = (-5); 
  /* 
  Error due to invalid resource handle being specified 
  */ 
  const PVMFStatus PVMFErrBadHandle = (-6); 
  /* 
  Error due to resource already exists and another one cannot be created 
  */ 
  const PVMFStatus PVMFErrAlreadyExists = (-7); 
  /* 
  Error due to resource being busy and request cannot be handled 
  */ 
  const PVMFStatus PVMFErrBusy = (-8); 
  /* 
  Error due to resource not ready to accept request 
  */ 
  const PVMFStatus PVMFErrNotReady = (-9); 
  /* 
  Error due to data corruption being detected 
  */ 
  const PVMFStatus PVMFErrCorrupt = (-10); 
  /* 
  Error due to request timing out 
  */ 
  const PVMFStatus PVMFErrTimeout = (-11); 
  /* 
  Error due to general overflow 
  */ 
  const PVMFStatus PVMFErrOverflow = (-12); 
  /* 
  Error due to general underflow 
  */ 
  const PVMFStatus PVMFErrUnderflow = (-13); 
  /* 
  Error due to resource being in wrong state to handle request 
  */ 
  const PVMFStatus PVMFErrInvalidState = (-14); 
  /* 
  Error due to resource not being available 
  */ 
  const PVMFStatus PVMFErrNoResources = (-15); 
  /* 
  Error due to invalid configuration of resource 
  */ 
  const PVMFStatus PVMFErrResourceConfiguration = (-16); 
  /* 
  Error due to general error in underlying resource 
  */ 
  const PVMFStatus PVMFErrResource = (-17); 
  /* 
  Error due to general data processing 
  */ 
  const PVMFStatus PVMFErrProcessing = (-18); 
  /* 
  Error due to general port processing 
  */ 
  const PVMFStatus PVMFErrPortProcessing = (-19); 
  /* 
  Error due to lack of authorization to access a resource. 
  */ 
  const PVMFStatus PVMFErrAccessDenied = (-20); 
  /* 
  Unused error code.  Can be re-defined. 
  */ 
  const PVMFStatus PVMFErrUnused_01 = (-21); 
  /* 
  Unused error code.  Can be re-defined. 
  */ 
  const PVMFStatus PVMFErrUnused_02 = (-22); 
  /* 
  Error due to the download content length larger than the maximum request size 
  */ 
  const PVMFStatus PVMFErrContentTooLarge = (-23); 
  /* 
  Error due to a maximum number of objects in use 
  */ 
  const PVMFStatus PVMFErrMaxReached = (-24); 
  /* 
  Return code for low disk space 
  */ 
  const PVMFStatus PVMFLowDiskSpace = (-25); 
  /* 
  Error due to the requirement of user-id and password input from app for HTTP basic/digest authentication 
  */ 
  const PVMFStatus PVMFErrHTTPAuthenticationRequired = (-26); 
  /* 
  PVMFMediaClock specific error. Callback has become invalid due to change in direction of NPT clock. 
  */ 
  const PVMFStatus PVMFErrCallbackHasBecomeInvalid = (-27); 
  /* 
  PVMFMediaClock specific error. Callback is called as clock has stopped. 
  */ 
  const PVMFStatus PVMFErrCallbackClockStopped = (-28); 
  /* 
  Error due to missing call for ReleaseMatadataValue() API 
  */ 
  const PVMFStatus PVMFErrReleaseMetadataValueNotDone = (-29); 
  /* 
  Error due to the redirect error 
  */ 
  const PVMFStatus PVMFErrRedirect = (-30); 
  /* 
  Error if a given method or API is not implemented. This is NOT the same as PVMFErrNotSupported. 
  */ 
  const PVMFStatus PVMFErrNotImplemented = (-31); 
  /* 
  DRM license not found 
  */ 
  const PVMFStatus PVMFErrDrmLicenseNotFound = (-32); 
  /* 
  DRM license has expired due to end time or usage count restriction 
  */ 
  const PVMFStatus PVMFErrDrmLicenseExpired = (-33); 
  /* 
  DRM license has a start time restriction and current time is too early 
  */ 
  const PVMFStatus PVMFErrDrmLicenseNotYetValid = (-34); 
  /* 
  DRM rights are insufficient for the requested operation 
  */ 
  const PVMFStatus PVMFErrDrmInsufficientRights = (-35); 
  /* 
  DRM rights require higher output protection level than supported by the device 
  */ 
  const PVMFStatus PVMFErrDrmOutputProtectionLevel = (-36); 
  /* 
  DRM clock rollback detected. 
  */ 
  const PVMFStatus PVMFErrDrmClockRollback = (-37); 
  /* 
  DRM clock is not available or cannot be read 
  */ 
  const PVMFStatus PVMFErrDrmClockError = (-38); 
  /* 
  DRM license store is corrupted 
  */ 
  const PVMFStatus PVMFErrDrmLicenseStoreCorrupt = (-39); 
  /* 
  DRM license store is not valid for the device. 
  */ 
  const PVMFStatus PVMFErrDrmLicenseStoreInvalid = (-40); 
  /* 
  DRM license store access failed 
  */ 
  const PVMFStatus PVMFErrDrmLicenseStoreAccess = (-41); 
  /* 
  DRM Device data access failed 
  */ 
  const PVMFStatus PVMFErrDrmDeviceDataAccess = (-42); 
  /* 
  DRM network error occurred in server communication 
  */ 
  const PVMFStatus PVMFErrDrmNetworkError = (-43); 
  /* 
  DRM device ID cannot be determined 
  */ 
  const PVMFStatus PVMFErrDrmDeviceIDUnavailable = (-44); 
  /* 
  DRM data is not matched to device 
  */ 
  const PVMFStatus PVMFErrDrmDeviceDataMismatch = (-45); 
  /* 
  DRM cryptography operation failed 
  */ 
  const PVMFStatus PVMFErrDrmCryptoError = (-46); 
  /* 
  DRM license not found, but a preview of the content is available. 
  */ 
  const PVMFStatus PVMFErrDrmLicenseNotFoundPreviewAvailable = (-47); 
  /* 
  Error due to unable to communicate with server 
  */ 
  const PVMFStatus PVMFErrDrmServerError = (-48); 
  /* 
  Error when a license server requests registration to a domain. 
  */ 
  const PVMFStatus PVMFErrDrmDomainRequired = (-49); 
  /* 
  Error when a license server requests renewal of a domain registration. 
  */ 
  const PVMFStatus PVMFErrDrmDomainRenewRequired = (-50); 
  /* 
  Error when a license server reports that the device is not part of the domain. 
  */ 
  const PVMFStatus PVMFErrDrmDomainNotAMember = (-51); 
  /* 
  Error due to device currently not activated for drm-protected content playback 
  */ 
  const PVMFStatus PVMFErrDrmDeviceNotActivated = (-52); 
  /* 
  The metering certificate was not found in the store. 
  */ 
  const PVMFStatus PVMFErrDrmMeterCertNotFound = (-53); 
  /* 
  Service specific server error. 
  */ 
  const PVMFStatus PVMFErrDrmServerServiceSpecific = (-54); 
  /* 
  An internal server error occurred. 
  */ 
  const PVMFStatus PVMFErrDrmServerInternalError = (-55); 
  /* 
  The device limit for the domain has been reached. 
  */ 
  const PVMFStatus PVMFErrDrmServerDeviceLimitReached = (-56); 
  /* 
  The metering identifier is unknown. 
  */ 
  const PVMFStatus PVMFErrDrmServerUnknownMeteringID = (-57); 
  /* 
  The computer limit for the domain has been reached. 
  */ 
  const PVMFStatus PVMFErrDrmServerComputerLimitReached = (-58); 
  /* 
  The protocol version specified was not supported by the server. 
  */ 
  const PVMFStatus PVMFErrDrmServerProtocolVersionMismatch = (-59); 
  /* 
  The account identifier is unknown. 
  */ 
  const PVMFStatus PVMFErrDrmServerUnknownAccountID = (-60); 
  /* 
  Server redirected request to different server due to protocol mismatch. 
  */ 
  const PVMFStatus PVMFErrDrmServerProtocolRedirect = (-61); 
  /* 
  */ 
  /* 
  ... this range reserved for future DRM-related errors 
  */ 
  /* 
  DRM Operational Error not otherwise specified 
  */ 
  const PVMFStatus PVMFErrDrmOperationFailed = (-81); 
  /* 
  Error returned when the video container is not valid for progressive playback. 
  */ 
  const PVMFStatus PVMFErrContentInvalidForProgressivePlayback = (-82); 
  /* 
  RTSP Error codes 
  */ 
  const PVMFStatus PVMFErrRTSP400BadRequest = (-83); 
  const PVMFStatus PVMFErrRTSP401Unauthorized = (-84); 
  const PVMFStatus PVMFErrRTSP402CodePaymentRequired = (-85); 
  const PVMFStatus PVMFErrRTSP403Forbidden = (-86); 
  const PVMFStatus PVMFErrRTSP404NotFound = (-87); 
  const PVMFStatus PVMFErrRTSP405MethodNotAllowed = (-88); 
  const PVMFStatus PVMFErrRTSP406NotAcceptable = (-89); 
  const PVMFStatus PVMFErrRTSP407ProxyAuthenticationRequired = (-90); 
  const PVMFStatus PVMFErrRTSP408RequestTimeOut = (-91); 
  const PVMFStatus PVMFErrRTSP410Gone = (-92); 
  const PVMFStatus PVMFErrRTSP411LengthRequired = (-93); 
  const PVMFStatus PVMFErrRTSP412PreconditionFailed = (-94); 
  const PVMFStatus PVMFErrRTSP413RequestEntityTooLarge = (-95); 
  const PVMFStatus PVMFErrRTSP414RequestURITooLarge = (-96); 
  const PVMFStatus PVMFErrRTSP415UnsupportedMediaType = (-97); 
  const PVMFStatus PVMFErrRTSP451ParameterNotUnderstood = (-98); 
  const PVMFStatus PVMFErrRTSP452ConferenceNotFound = (-99); 
  const PVMFStatus PVMFErrRTSP453NotEnoughBandwidth = (-100); 
  const PVMFStatus PVMFErrRTSP454SessionNotFound = (-101); 
  const PVMFStatus PVMFErrRTSP455MethodNotValidInThisState = (-102); 
  const PVMFStatus PVMFErrRTSP456HeaderFieldNotValidForResource = (-103); 
  const PVMFStatus PVMFErrRTSP457InvalidRange = (-104); 
  const PVMFStatus PVMFErrRTSP458ParameterIsReadOnly = (-105); 
  const PVMFStatus PVMFErrRTSP459AggregateOperationNotAllowed = (-106); 
  const PVMFStatus PVMFErrRTSP460OnlyAggregateOperationAllowed = (-107); 
  const PVMFStatus PVMFErrRTSP461UnsupportedTransport = (-108); 
  const PVMFStatus PVMFErrRTSP462DestinationUnreachable = (-109); 
  const PVMFStatus PVMFErrRTSP480UnsupportedClient = (-110); 
  const PVMFStatus PVMFErrRTSP500InternalServerError = (-111); 
  const PVMFStatus PVMFErrRTSP501NotImplemented = (-112); 
  const PVMFStatus PVMFErrRTSP502BadGateway = (-113); 
  const PVMFStatus PVMFErrRTSP503ServiceUnavailable = (-114); 
  const PVMFStatus PVMFErrRTSP504GatewayTimeout = (-115); 
  const PVMFStatus PVMFErrRTSP505RTSPVersionNotSupported = (-116); 
  /* 
  Notification that a port was created 
  */ 
  const PVMFStatus PVMFInfoPortCreated = 10; 
  /* 
  Notification that a port was deleted 
  */ 
  const PVMFStatus PVMFInfoPortDeleted = 11; 
  /* 
  Notification that a port was connected 
  */ 
  const PVMFStatus PVMFInfoPortConnected = 12; 
  /* 
  Notification that a port was disconnected 
  */ 
  const PVMFStatus PVMFInfoPortDisconnected = 13; 
  /* 
  Notification that an overflow occurred (not fatal error) 
  */ 
  const PVMFStatus PVMFInfoOverflow = 14; 
  /* 
  Notification that an underflow occurred (not fatal error) 
  */ 
  const PVMFStatus PVMFInfoUnderflow = 15; 
  /* 
  Notification that a processing failure occurred (not fatal error) 
  */ 
  const PVMFStatus PVMFInfoProcessingFailure = 16; 
  /* 
  Notification that end of data stream has been reached 
  */ 
  const PVMFStatus PVMFInfoEndOfData = 17; 
  /* 
  Notification that a data buffer has been created 
  */ 
  const PVMFStatus PVMFInfoBufferCreated = 18; 
  /* 
  Notification that buffering of data has started 
  */ 
  const PVMFStatus PVMFInfoBufferingStart = 19; 
  /* 
  Notification for data buffering level status 
  */ 
  const PVMFStatus PVMFInfoBufferingStatus = 20; 
  /* 
  Notification that data buffering has completed 
  */ 
  const PVMFStatus PVMFInfoBufferingComplete = 21; 
  /* 
  Notification that data is ready for use 
  */ 
  const PVMFStatus PVMFInfoDataReady = 22; 
  /* 
  Notification for position status 
  */ 
  const PVMFStatus PVMFInfoPositionStatus = 23; 
  /* 
  Notification for node state change 
  */ 
  const PVMFStatus PVMFInfoStateChanged = 24; 
  /* 
  Notification that data was discarded during synchronization. 
  */ 
  const PVMFStatus PVMFInfoDataDiscarded = 25; 
  /* 
  Notification that error handling has started 
  */ 
  const PVMFStatus PVMFInfoErrorHandlingStart = 26; 
  /* 
  Notification that error handling has completed 
  */ 
  const PVMFStatus PVMFInfoErrorHandlingComplete = 27; 
  /* 
  Notification from a remote source 
  */ 
  const PVMFStatus PVMFInfoRemoteSourceNotification = 28; 
  /* 
  Notification that license acquisition has started. 
  */ 
  const PVMFStatus PVMFInfoLicenseAcquisitionStarted = 29; 
  /* 
  Notification that download content length is available 
  */ 
  const PVMFStatus PVMFInfoContentLength = 30; 
  /* 
  Notification that downloaded content reaches the maximum request size, and will 
  be truncated, especially for the case of unavailable content length 
  */ 
  const PVMFStatus PVMFInfoContentTruncated = 31; 
  /* 
  Notification that source format is not supported, typically sent 
  during protocol rollover 
  */ 
  const PVMFStatus PVMFInfoSourceFormatNotSupported = 32; 
  /* 
  Notification that a clip transition has occurred while playing a playlist 
  */ 
  const PVMFStatus PVMFInfoPlayListClipTransition = 33; 
  /* 
  Notification that content type for download or HTTP streaming is available 
  */ 
  const PVMFStatus PVMFInfoContentType = 34; 
  /* 
  Notification that paticular track is disable. This one is on a per track basis. 
  */ 
  const PVMFStatus PVMFInfoTrackDisable = 35; 
  /* 
  Notification that unexpected data has been obtained, especially for download, 
  when client receives from server more data than requested in content-length header 
  */ 
  const PVMFStatus PVMFInfoUnexpectedData = 36; 
  /* 
  Notification that server discnnect happens after download is complete 
  */ 
  const PVMFStatus PVMFInfoSessionDisconnect = 37; 
  /* 
  Notification that new meadi stream has been started 
  */ 
  const PVMFStatus PVMFInfoStartOfData = 38; 
  /* 
  Notification that node has processed a command with ReportObserver marker info 
  */ 
  const PVMFStatus PVMFInfoReportObserverRecieved = 39; 
  /* 
  Notification that meta data is available with source node 
  */ 
  const PVMFStatus PVMFInfoMetadataAvailable = 40; 
  /* 
  Notification that duration is available with source node 
  */ 
  const PVMFStatus PVMFInfoDurationAvailable = 41; 
  /* 
  Notification that Change Position request not supported 
  */ 
  const PVMFStatus PVMFInfoChangePlaybackPositionNotSupported = 42; 
  /* 
  Notification that the content is poorly inter-leaved 
  */ 
  const PVMFStatus PVMFInfoPoorlyInterleavedContent = 43; 
  /* 
  Notification for actual playback position after repositioning 
  */ 
  const PVMFStatus PVMFInfoActualPlaybackPosition = 44; 
  /* 
  Notification that the live buffer is empty 
  */ 
  const PVMFStatus PVMFInfoLiveBufferEmpty = 45; 
  /* 
  Notification that a server has responded with 200 OK to a Playlist play request 
  */ 
  const PVMFStatus PVMFInfoPlayListSwitch = 46; 
  /* 
  Notification of configuration complete 
  */ 
  const PVMFStatus PVMFMIOConfigurationComplete = 47; 
  /* 
  Notification that the video track is falling behind 
  */ 
  const PVMFStatus PVMFInfoVideoTrackFallingBehind = 48; 
  /* 
  Notification that memory is not available for new RTP packets 
  */ 
  const PVMFStatus PVMFInfoSourceOverflow = 49; 
  /* 
  Notification for Media data length in shoutcast session 
  */ 
  const PVMFStatus PVMFInfoShoutcastMediaDataLength = 50; 
  /* 
  Notification for clip bitrate in shoutcast session 
  */ 
  const PVMFStatus PVMFInfoShoutcastClipBitrate = 51; 
  /* 
  Notification for shoutcast session 
  */ 
  const PVMFStatus PVMFInfoIsShoutcastSesssion = 52; 
  /* 
  Notification that the engine must select tracks (for e.g. during a 3GPP FCS) 
  */ 
  const PVMFStatus PVMFInfoTrackSelectionNeeded = 53; 
  /* 
  Notification for corrupted clip during playlist playback 
  */ 
  const PVMFStatus PVMFInfoClipCorrupted = 54; 
  /* 
  Notification that source format has been updated 
  */ 
  const PVMFStatus PVMFInfoSourceFormatUpdated = 55; 
  /* 
  Notification for invalid ts in the RTP packet 
  */ 
  const PVMFStatus PVMFErrInvalidRTPTimeInPkt = 56; 
  /* 
  Notification that pvmiGetBufferAllocatorSpecificInfoSync was unsuccessful 
  */ 
  const PVMFStatus PVMFPvmiBufferAllocatorNotAcquired = 55; 
  /* 
  Notification that pvmiGetBufferAllocatorSpecificInfoSync was successful 
  */ 
  const PVMFStatus PVMFPvmiBufferAlloctorAcquired = 56; 
原创粉丝点击