java.lang.Object | |
↳ | android.media.MediaMetadataRetriever |
MediaMetadataRetriever class provides a unified interface for retrieving frame and meta data from an input media file.
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
int | METADATA_KEY_ALBUM | The metadata key to retrieve the information about the album title of the data source. | |||||||||
int | METADATA_KEY_ALBUMARTIST | The metadata key to retrieve the information about the performers or artist associated with the data source. | |||||||||
int | METADATA_KEY_ARTIST | The metadata key to retrieve the information about the artist of the data source. | |||||||||
int | METADATA_KEY_AUTHOR | The metadata key to retrieve the information about the author of the data source. | |||||||||
int | METADATA_KEY_BITRATE | This key retrieves the average bitrate (in bits/sec), if available. | |||||||||
int | METADATA_KEY_CAPTURE_FRAMERATE | This key retrieves the original capture framerate, if it's available. | |||||||||
int | METADATA_KEY_CD_TRACK_NUMBER | The metadata key to retrieve the numeric string describing the order of the audio data source on its original recording. | |||||||||
int | METADATA_KEY_COMPILATION | The metadata key to retrieve the music album compilation status. | |||||||||
int | METADATA_KEY_COMPOSER | The metadata key to retrieve the information about the composer of the data source. | |||||||||
int | METADATA_KEY_DATE | The metadata key to retrieve the date when the data source was created or modified. | |||||||||
int | METADATA_KEY_DISC_NUMBER | The metadata key to retrieve the numberic string that describes which part of a set the audio data source comes from. | |||||||||
int | METADATA_KEY_DURATION | The metadata key to retrieve the playback duration of the data source. | |||||||||
int | METADATA_KEY_GENRE | The metadata key to retrieve the content type or genre of the data source. | |||||||||
int | METADATA_KEY_HAS_AUDIO | If this key exists the media contains audio content. | |||||||||
int | METADATA_KEY_HAS_VIDEO | If this key exists the media contains video content. | |||||||||
int | METADATA_KEY_LOCATION | This key retrieves the location information, if available. | |||||||||
int | METADATA_KEY_MIMETYPE | The metadata key to retrieve the mime type of the data source. | |||||||||
int | METADATA_KEY_NUM_TRACKS | The metadata key to retrieve the number of tracks, such as audio, video, text, in the data source, such as a mp4 or 3gpp file. | |||||||||
int | METADATA_KEY_TITLE | The metadata key to retrieve the data source title. | |||||||||
int | METADATA_KEY_VIDEO_HEIGHT | If the media contains video, this key retrieves its height. | |||||||||
int | METADATA_KEY_VIDEO_ROTATION | This key retrieves the video rotation angle in degrees, if available. | |||||||||
int | METADATA_KEY_VIDEO_WIDTH | If the media contains video, this key retrieves its width. | |||||||||
int | METADATA_KEY_WRITER | The metadata key to retrieve the information of the writer (such as lyricist) of the data source. | |||||||||
int | METADATA_KEY_YEAR | The metadata key to retrieve the year when the data source was created or modified. | |||||||||
int | OPTION_CLOSEST |
This option is used with getFrameAtTime(long, int) to retrieve
a frame (not necessarily a key frame) associated with a data source that
is located closest to or at the given time.
|
|||||||||
int | OPTION_CLOSEST_SYNC |
This option is used with getFrameAtTime(long, int) to retrieve
a sync (or key) frame associated with a data source that is located
closest to (in time) or at the given time.
|
|||||||||
int | OPTION_NEXT_SYNC |
This option is used with getFrameAtTime(long, int) to retrieve
a sync (or key) frame associated with a data source that is located
right after or at the given time.
|
|||||||||
int | OPTION_PREVIOUS_SYNC |
This option is used with getFrameAtTime(long, int) to retrieve
a sync (or key) frame associated with a data source that is located
right before or at the given time.
|
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Call this method after setDataSource().
| |||||||||||
Call this method after setDataSource().
| |||||||||||
Call this method after setDataSource().
| |||||||||||
Call this method after setDataSource().
| |||||||||||
Call this method after setDataSource().
| |||||||||||
Call it when one is done with the object.
| |||||||||||
Sets the data source (file pathname) to use.
| |||||||||||
Sets the data source (URI) to use.
| |||||||||||
Sets the data source (FileDescriptor) to use.
| |||||||||||
Sets the data source (FileDescriptor) to use.
| |||||||||||
Sets the data source (MediaDataSource) to use.
| |||||||||||
Sets the data source as a content Uri.
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Invoked when the garbage collector has detected that this instance is no longer reachable.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
|
The metadata key to retrieve the information about the album title of the data source.
The metadata key to retrieve the information about the performers or artist associated with the data source.
The metadata key to retrieve the information about the artist of the data source.
The metadata key to retrieve the information about the author of the data source.
This key retrieves the average bitrate (in bits/sec), if available.
This key retrieves the original capture framerate, if it's available. The capture framerate will be a floating point number.
The metadata key to retrieve the numeric string describing the order of the audio data source on its original recording.
The metadata key to retrieve the music album compilation status.
The metadata key to retrieve the information about the composer of the data source.
The metadata key to retrieve the date when the data source was created or modified.
The metadata key to retrieve the numberic string that describes which part of a set the audio data source comes from.
The metadata key to retrieve the playback duration of the data source.
The metadata key to retrieve the content type or genre of the data source.
If this key exists the media contains audio content.
If this key exists the media contains video content.
This key retrieves the location information, if available. The location should be specified according to ISO-6709 standard, under a mp4/3gp box "@xyz". Location with longitude of -90 degrees and latitude of 180 degrees will be retrieved as "-90.0000+180.0000", for instance.
The metadata key to retrieve the mime type of the data source. Some example mime types include: "video/mp4", "audio/mp4", "audio/amr-wb", etc.
The metadata key to retrieve the number of tracks, such as audio, video, text, in the data source, such as a mp4 or 3gpp file.
The metadata key to retrieve the data source title.
If the media contains video, this key retrieves its height.
This key retrieves the video rotation angle in degrees, if available. The video rotation angle may be 0, 90, 180, or 270 degrees.
If the media contains video, this key retrieves its width.
The metadata key to retrieve the information of the writer (such as lyricist) of the data source.
The metadata key to retrieve the year when the data source was created or modified.
This option is used with getFrameAtTime(long, int)
to retrieve
a frame (not necessarily a key frame) associated with a data source that
is located closest to or at the given time.
This option is used with getFrameAtTime(long, int)
to retrieve
a sync (or key) frame associated with a data source that is located
closest to (in time) or at the given time.
This option is used with getFrameAtTime(long, int)
to retrieve
a sync (or key) frame associated with a data source that is located
right after or at the given time.
This option is used with getFrameAtTime(long, int)
to retrieve
a sync (or key) frame associated with a data source that is located
right before or at the given time.
Call this method after setDataSource(). This method retrieves the meta data value associated with the keyCode. The keyCode currently supported is listed below as METADATA_XXX constants. With any other value, it returns a null pointer.
keyCode | One of the constants listed below at the end of the class. |
---|
Call this method after setDataSource(). This method finds the optional graphic or album/cover art associated associated with the data source. If there are more than one pictures, (any) one of them is returned.
Call this method after setDataSource(). This method finds a
representative frame close to the given time position if possible,
and returns it as a bitmap. This is useful for generating a thumbnail
for an input data source. Call this method if one does not care
how the frame is found as long as it is close to the given time;
otherwise, please call getFrameAtTime(long, int)
.
timeUs | The time position where the frame will be retrieved. When retrieving the frame at the given time position, there is no guarentee that the data source has a frame located at the position. When this happens, a frame nearby will be returned. If timeUs is negative, time position and option will ignored, and any frame that the implementation considers as representative may be returned. |
---|
Call this method after setDataSource(). This method finds a representative frame close to the given time position by considering the given option if possible, and returns it as a bitmap. This is useful for generating a thumbnail for an input data source or just obtain and display a frame at the given time position.
timeUs | The time position where the frame will be retrieved. When retrieving the frame at the given time position, there is no guarantee that the data source has a frame located at the position. When this happens, a frame nearby will be returned. If timeUs is negative, time position and option will ignored, and any frame that the implementation considers as representative may be returned. |
---|---|
option | a hint on how the frame is found. Use
OPTION_PREVIOUS_SYNC if one wants to retrieve a sync frame
that has a timestamp earlier than or the same as timeUs. Use
OPTION_NEXT_SYNC if one wants to retrieve a sync frame
that has a timestamp later than or the same as timeUs. Use
OPTION_CLOSEST_SYNC if one wants to retrieve a sync frame
that has a timestamp closest to or the same as timeUs. Use
OPTION_CLOSEST if one wants to retrieve a frame that may
or may not be a sync frame but is closest to or the same as timeUs.
OPTION_CLOSEST often has larger performance overhead compared
to the other options if there is no sync frame located at timeUs. |
Call this method after setDataSource(). This method finds a
representative frame at any time position if possible,
and returns it as a bitmap. This is useful for generating a thumbnail
for an input data source. Call this method if one does not
care about where the frame is located; otherwise, please call
getFrameAtTime(long)
or getFrameAtTime(long, int)
Call it when one is done with the object. This method releases the memory allocated internally.
Sets the data source (file pathname) to use. Call this method before the rest of the methods in this class. This method may be time-consuming.
path | The path of the input media file. |
---|
IllegalArgumentException | If the path is invalid. |
---|
Sets the data source (URI) to use. Call this method before the rest of the methods in this class. This method may be time-consuming.
uri | The URI of the input media. |
---|---|
headers | the headers to be sent together with the request for the data |
IllegalArgumentException | If the URI is invalid. |
---|
Sets the data source (FileDescriptor) to use. It is the caller's responsibility to close the file descriptor. It is safe to do so as soon as this call returns. Call this method before the rest of the methods in this class. This method may be time-consuming.
fd | the FileDescriptor for the file you want to play |
---|
IllegalArgumentException | if the FileDescriptor is invalid |
---|
Sets the data source (FileDescriptor) to use. It is the caller's responsibility to close the file descriptor. It is safe to do so as soon as this call returns. Call this method before the rest of the methods in this class. This method may be time-consuming.
fd | the FileDescriptor for the file you want to play |
---|---|
offset | the offset into the file where the data to be played starts, in bytes. It must be non-negative |
length | the length in bytes of the data to be played. It must be non-negative. |
IllegalArgumentException | if the arguments are invalid |
---|
Sets the data source (MediaDataSource) to use.
dataSource | the MediaDataSource for the media you want to play |
---|
IllegalArgumentException |
---|
Sets the data source as a content Uri. Call this method before the rest of the methods in this class. This method may be time-consuming.
context | the Context to use when resolving the Uri |
---|---|
uri | the Content URI of the data you want to play |
IllegalArgumentException | if the Uri is invalid |
---|---|
SecurityException | if the Uri cannot be used due to lack of permission. |
Invoked when the garbage collector has detected that this instance is no longer reachable. The default implementation does nothing, but this method can be overridden to free resources.
Note that objects that override finalize
are significantly more expensive than
objects that don't. Finalizers may be run a long time after the object is no longer
reachable, depending on memory pressure, so it's a bad idea to rely on them for cleanup.
Note also that finalizers are run on a single VM-wide finalizer thread,
so doing blocking work in a finalizer is a bad idea. A finalizer is usually only necessary
for a class that has a native peer and needs to call a native method to destroy that peer.
Even then, it's better to provide an explicit close
method (and implement
Closeable
), and insist that callers manually dispose of instances. This
works well for something like files, but less well for something like a BigInteger
where typical calling code would have to deal with lots of temporaries. Unfortunately,
code that creates lots of temporaries is the worst kind of code from the point of view of
the single finalizer thread.
If you must use finalizers, consider at least providing your own
ReferenceQueue
and having your own thread process that queue.
Unlike constructors, finalizers are not automatically chained. You are responsible for
calling super.finalize()
yourself.
Uncaught exceptions thrown by finalizers are ignored and do not terminate the finalizer thread. See Effective Java Item 7, "Avoid finalizers" for more.
Throwable |
---|