I'm getting the following error java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA
and I'd like to know what this status is. I'm using the function MediaMetaDataRetriever.setDataSource(String filePath)

- 7,978
- 3
- 36
- 36
7 Answers
I got this error java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA
when tried to call void setDataSource(String path)
on an empty file. (0 bytes)
You need to be 100% sure that path for the file is not null, not empty, the file itself exists and valid.

- 6,256
- 2
- 54
- 42
-
@user25 maybe it's invalid or unrecognizable format? Could you specify which file causes such error? (type, extension, size, maybe upload it somewhere?) – Kirill Karmazin Nov 17 '18 at 17:27
I didn't have an empty file or any other of the here mentioned bugs in my code. The files I tried to use were fine. I don't exactly know why, but it worked for me when I simply used another overload of setDataSource
.
The ones I used that threw this exception were MediaMetadataRetriever.setDataSource(String)
and MediaMetadataRetriever.setDataSource(String, HashMap)
The one that simply worked was MediaMetadataRetriever.setDataSource(Context, URI)
.

- 2,247
- 2
- 25
- 46
It was very well buried but I found the source. Here is a link to the error codes
It's a build from ICS and I'm not sure where it is in the current build.
My error was a not supported error when I used a midi file.
Source:
/*
* 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_

- 7,978
- 3
- 36
- 36
-
1FYI, if you'd like to retrieve metadata from your midi file you can try: https://github.com/wseemann/FFmpegMediaMetadataRetriever. – William Seemann Jan 09 '14 at 05:49
-
Sorry Andrew, I don't. FFmpeg doesn't allow writing metadata without creating a new file otherwise I would modify my library to help you out. If you are only looking to change the metadata tags for a handful of formats there are several Java libraries you can use but they lack a common interface. – William Seemann Jan 11 '14 at 00:28
-
15@AndrewOrobator how did you map `0xFFFFFFEA = -22` to any of the above enum values? – TWiStErRob Apr 18 '15 at 14:58
-
-
-
-
1
I got this error: setDataSource failed: status = 0xFFFFFFEA
because the file does not exist on my device.

- 2,429
- 4
- 24
- 34
I met this question when I try to use a 0 kb mp3 file,I solved it after I deleted that file.maybe you can catch this exception.

- 116
- 6
Just adding this link to know more about error codes: https://kdave.github.io/errno.h/
By searching for FFEA, it tells that 0xFFFFFFEA is decimal value 22 as @AndrewOrobator said, the error is EINVAL invalid argument.

- 10,923
- 13
- 90
- 158
I'm catch this error when my audio file was brocken, it solved when I change file, you can try manually set different sources paths

- 734
- 6
- 12