如何访问MediaMetadataRetriever.setDataSource(...)状态代码?

时间:2014-01-09 00:38:34

标签: android android-mediaplayer android-music-player

我收到以下错误java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA,我想知道这个状态是什么。我正在使用函数MediaMetaDataRetriever.setDataSource(String filePath)

6 个答案:

答案 0 :(得分:5)

它被埋没了,但我找到了源头。 Here is a link to the error codes

这是来自ICS的构建,我不确定它在当前版本中的位置。

当我使用midi文件时,我的错误是一个不支持的错误。

来源:

/*
 * Copyright (C) 2009 The Android Open Source Project
 *
 * 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.
 */

#ifndef MEDIA_ERRORS_H_

#define MEDIA_ERRORS_H_

#include <utils/Errors.h>

namespace android {

enum {
    MEDIA_ERROR_BASE        = -1000,

    ERROR_ALREADY_CONNECTED = MEDIA_ERROR_BASE,
    ERROR_NOT_CONNECTED     = MEDIA_ERROR_BASE - 1,
    ERROR_UNKNOWN_HOST      = MEDIA_ERROR_BASE - 2,
    ERROR_CANNOT_CONNECT    = MEDIA_ERROR_BASE - 3,
    ERROR_IO                = MEDIA_ERROR_BASE - 4,
    ERROR_CONNECTION_LOST   = MEDIA_ERROR_BASE - 5,
    ERROR_MALFORMED         = MEDIA_ERROR_BASE - 7,
    ERROR_OUT_OF_RANGE      = MEDIA_ERROR_BASE - 8,
    ERROR_BUFFER_TOO_SMALL  = MEDIA_ERROR_BASE - 9,
    ERROR_UNSUPPORTED       = MEDIA_ERROR_BASE - 10,
    ERROR_END_OF_STREAM     = MEDIA_ERROR_BASE - 11,

    // Not technically an error.
    INFO_FORMAT_CHANGED    = MEDIA_ERROR_BASE - 12,
    INFO_DISCONTINUITY     = MEDIA_ERROR_BASE - 13,

    // The following constant values should be in sync with
    // drm/drm_framework_common.h
    DRM_ERROR_BASE = -2000,

    ERROR_DRM_UNKNOWN                       = DRM_ERROR_BASE,
    ERROR_DRM_NO_LICENSE                    = DRM_ERROR_BASE - 1,
    ERROR_DRM_LICENSE_EXPIRED               = DRM_ERROR_BASE - 2,
    ERROR_DRM_SESSION_NOT_OPENED            = DRM_ERROR_BASE - 3,
    ERROR_DRM_DECRYPT_UNIT_NOT_INITIALIZED  = DRM_ERROR_BASE - 4,
    ERROR_DRM_DECRYPT                       = DRM_ERROR_BASE - 5,
    ERROR_DRM_CANNOT_HANDLE                 = DRM_ERROR_BASE - 6,
    ERROR_DRM_TAMPER_DETECTED               = DRM_ERROR_BASE - 7,

    // Heartbeat Error Codes
    HEARTBEAT_ERROR_BASE = -3000,

    ERROR_HEARTBEAT_AUTHENTICATION_FAILURE                  = HEARTBEAT_ERROR_BASE,
    ERROR_HEARTBEAT_NO_ACTIVE_PURCHASE_AGREEMENT            = HEARTBEAT_ERROR_BASE - 1,
    ERROR_HEARTBEAT_CONCURRENT_PLAYBACK                     = HEARTBEAT_ERROR_BASE - 2,
    ERROR_HEARTBEAT_UNUSUAL_ACTIVITY                        = HEARTBEAT_ERROR_BASE - 3,
    ERROR_HEARTBEAT_STREAMING_UNAVAILABLE                   = HEARTBEAT_ERROR_BASE - 4,
    ERROR_HEARTBEAT_CANNOT_ACTIVATE_RENTAL                  = HEARTBEAT_ERROR_BASE - 5,
    ERROR_HEARTBEAT_TERMINATE_REQUESTED                     = HEARTBEAT_ERROR_BASE - 6,
};

}  // namespace android

#endif  // MEDIA_ERRORS_H_

答案 1 :(得分:5)

我在尝试在空文件上调用java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA时收到此错误void setDataSource(String path)。 (0字节)

您需要100%确定文件的路径不为空,不为空,文件本身存在且有效。

答案 2 :(得分:1)

我收到此错误:setDataSource failed: status = 0xFFFFFFEA因为我的设备上不存在该文件。

答案 3 :(得分:0)

当我的音频文件被删除时,我抓住了这个错误,当我更改文件时它解决了,你可以尝试手动设置不同的源路径

答案 4 :(得分:0)

我的代码中没有空文件或此处提到的其他bug。我尝试使用的文件很好。我不知道为什么,但是当我简单地使用另一个using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Table; using System.Threading.Tasks; namespace MyFunctions { public class StorageTableOperation<T> where T : ITableEntity { internal CloudTable cloudTable; public StorageTableOperation(string tableName) { string connectionString = Environment.GetEnvironmentVariable("AzureWebJobsStorage"); CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString); CloudTableClient client = storageAccount.CreateCloudTableClient(); cloudTable = client.GetTableReference(tableName); } public T GetTableData(string PartitionKey,string RowKey) { TableOperation retOp = TableOperation.Retrieve<T>(PartitionKey, RowKey); TableResult result = cloudTable.Execute(retOp); T tableData = (T)result.Result; return tableData; } public async Task<bool> UpdateTableData(string PartitionKey, string RowKey, T tableData) { try { TableOperation operation = TableOperation.InsertOrMerge(tableData); TableResult tableResult = await cloudTable.ExecuteAsync(operation); return true; } catch(Exception ex) { return false; } } } } 重载时,它对我有用。

我曾经引发此异常的是setDataSourceMediaMetadataRetriever.setDataSource(String)

简单起作用的是MediaMetadataRetriever.setDataSource(String, HashMap)

答案 5 :(得分:0)

当我尝试使用0 kb mp3文件时遇到了这个问题,删除该文件后便解决了。也许您可以捕获此异常。