Most visited

Recently visited

Added in API level 10

MediaMetadataRetriever

public class MediaMetadataRetriever
extends Object

java.lang.Object
   ↳ android.media.MediaMetadataRetriever


MediaMetadataRetriever类提供统一的接口,用于从输入媒体文件中检索帧和元数据。

Summary

Constants

int METADATA_KEY_ALBUM

元数据键可检索有关数据源的专辑标题的信息。

int METADATA_KEY_ALBUMARTIST

元数据密钥用于检索关于与数据源关联的表演者或艺术家的信息。

int METADATA_KEY_ARTIST

用于检索关于数据源的艺术家的信息的元数据关键字。

int METADATA_KEY_AUTHOR

元数据密钥用于检索有关数据源作者的信息。

int METADATA_KEY_BITRATE

如果可用,此键检索平均比特率(以比特/秒为单位)。

int METADATA_KEY_CAPTURE_FRAMERATE

该键可检索原始捕获帧率(如果可用)。

int METADATA_KEY_CD_TRACK_NUMBER

用于检索描述音频数据源在其原始记录上的顺序的数字字符串的元数据关键字。

int METADATA_KEY_COMPILATION

用于检索音乐专辑编辑状态的元数据键。

int METADATA_KEY_COMPOSER

用于检索有关数据源作曲者信息的元数据关键字。

int METADATA_KEY_DATE

用于检索数据源创建或修改日期的元数据键。

int METADATA_KEY_DISC_NUMBER

用于检索描述音频数据源来自哪个部分的数字字符串的元数据键。

int METADATA_KEY_DURATION

元数据密钥用于检索数据源的播放时间。

int METADATA_KEY_GENRE

用于检索数据源的内容类型或流派的元数据关键字。

int METADATA_KEY_HAS_AUDIO

如果此键存在,则媒体包含音频内容。

int METADATA_KEY_HAS_VIDEO

如果该键存在,则媒体包含视频内容。

int METADATA_KEY_LOCATION

该键检索位置信息(如果可用)。

int METADATA_KEY_MIMETYPE

用于检索数据源的MIME类型的元数据密钥。

int METADATA_KEY_NUM_TRACKS

用于检索数据源中音轨,视频,文本等音轨数量的元数据键,如mp4或3gpp文件。

int METADATA_KEY_TITLE

用于检索数据源标题的元数据键。

int METADATA_KEY_VIDEO_HEIGHT

如果媒体包含视频,则此键检索其高度。

int METADATA_KEY_VIDEO_ROTATION

如果可用,此键以度数检索视频旋转角度。

int METADATA_KEY_VIDEO_WIDTH

如果媒体包含视频,则此键检索其宽度。

int METADATA_KEY_WRITER

元数据密钥用于检索数据源的作者信息(例如词组作者)。

int METADATA_KEY_YEAR

用于检索数据源创建或修改年份的元数据键。

int OPTION_CLOSEST

此选项与 getFrameAtTime(long, int)用于检索与位于最接近或在给定时间的数据源关联的帧(不一定是关键帧)。

int OPTION_CLOSEST_SYNC

该选项与 getFrameAtTime(long, int)用于检索与位于最接近(及时)或在给定时间的数据源相关联的同步(或密钥)帧。

int OPTION_NEXT_SYNC

此选项与 getFrameAtTime(long, int)用于检索与位于给定时间之后或之后的数据源关联的同步(或关键)帧。

int OPTION_PREVIOUS_SYNC

此选项与 getFrameAtTime(long, int)用于检索与位于给定时间之前或之前的数据源关联的同步(或关键字)帧。

Public constructors

MediaMetadataRetriever()

Public methods

String extractMetadata(int keyCode)

在setDataSource()之后调用此方法。

byte[] getEmbeddedPicture()

在setDataSource()之后调用此方法。

Bitmap getFrameAtTime(long timeUs)

在setDataSource()之后调用此方法。

Bitmap getFrameAtTime()

在setDataSource()之后调用此方法。

Bitmap getFrameAtTime(long timeUs, int option)

在setDataSource()之后调用此方法。

void release()

当一个对象完成时调用它。

void setDataSource(FileDescriptor fd, long offset, long length)

设置要使用的数据源(FileDescriptor)。

void setDataSource(String path)

设置要使用的数据源(文件路径名)。

void setDataSource(Context context, Uri uri)

将数据源设置为内容Uri。

void setDataSource(FileDescriptor fd)

设置要使用的数据源(FileDescriptor)。

void setDataSource(String uri, Map<StringString> headers)

设置要使用的数据源(URI)。

void setDataSource(MediaDataSource dataSource)

设置要使用的数据源(MediaDataSource)。

Protected methods

void finalize()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。

Inherited methods

From class java.lang.Object

Constants

METADATA_KEY_ALBUM

Added in API level 10
int METADATA_KEY_ALBUM

元数据键可检索有关数据源的专辑标题的信息。

常数值:1(0x00000001)

METADATA_KEY_ALBUMARTIST

Added in API level 10
int METADATA_KEY_ALBUMARTIST

元数据密钥用于检索关于与数据源关联的表演者或艺术家的信息。

常量值:13(0x0000000d)

METADATA_KEY_ARTIST

Added in API level 10
int METADATA_KEY_ARTIST

用于检索关于数据源的艺术家的信息的元数据关键字。

常量值:2(0x00000002)

METADATA_KEY_AUTHOR

Added in API level 10
int METADATA_KEY_AUTHOR

元数据密钥用于检索有关数据源作者的信息。

常量值:3(0x00000003)

METADATA_KEY_BITRATE

Added in API level 14
int METADATA_KEY_BITRATE

如果可用,此键检索平均比特率(以比特/秒为单位)。

常量值:20(0x00000014)

METADATA_KEY_CAPTURE_FRAMERATE

Added in API level 23
int METADATA_KEY_CAPTURE_FRAMERATE

该键可检索原始捕获帧率(如果可用)。 捕获帧率将是一个浮点数。

常量值:25(0x00000019)

METADATA_KEY_CD_TRACK_NUMBER

Added in API level 10
int METADATA_KEY_CD_TRACK_NUMBER

用于检索描述音频数据源在其原始记录上的顺序的数字字符串的元数据关键字。

常量值:0(0x00000000)

METADATA_KEY_COMPILATION

Added in API level 10
int METADATA_KEY_COMPILATION

用于检索音乐专辑编辑状态的元数据键。

常量值:15(0x0000000f)

METADATA_KEY_COMPOSER

Added in API level 10
int METADATA_KEY_COMPOSER

用于检索有关数据源作曲者信息的元数据关键字。

常量值:4(0x00000004)

METADATA_KEY_DATE

Added in API level 10
int METADATA_KEY_DATE

用于检索数据源创建或修改日期的元数据键。

常量值:5(0x00000005)

METADATA_KEY_DISC_NUMBER

Added in API level 10
int METADATA_KEY_DISC_NUMBER

用于检索描述音频数据源来自哪个部分的数字字符串的元数据键。

常量值:14(0x0000000e)

METADATA_KEY_DURATION

Added in API level 10
int METADATA_KEY_DURATION

元数据密钥用于检索数据源的播放时间。

常量值:9(0x00000009)

METADATA_KEY_GENRE

Added in API level 10
int METADATA_KEY_GENRE

用于检索数据源的内容类型或流派的元数据关键字。

常数值:6(0x00000006)

METADATA_KEY_HAS_AUDIO

Added in API level 14
int METADATA_KEY_HAS_AUDIO

如果此键存在,则媒体包含音频内容。

常量值:16(0x00000010)

METADATA_KEY_HAS_VIDEO

Added in API level 14
int METADATA_KEY_HAS_VIDEO

如果该键存在,则媒体包含视频内容。

常量值:17(0x00000011)

METADATA_KEY_LOCATION

Added in API level 15
int METADATA_KEY_LOCATION

该键检索位置信息(如果可用)。 该位置应按照ISO-6709标准,在mp4 / 3gp“@xyz”框中指定。 例如,经度为-90度和纬度为180度的位置将被检索为“-90.0000 + 180.0000”。

常量值:23(0x00000017)

METADATA_KEY_MIMETYPE

Added in API level 10
int METADATA_KEY_MIMETYPE

用于检索数据源的MIME类型的元数据密钥。 一些MIME类型的例子包括:“video / mp4”,“audio / mp4”,“audio / amr-wb”等。

常量值:12(0x0000000c)

METADATA_KEY_NUM_TRACKS

Added in API level 10
int METADATA_KEY_NUM_TRACKS

用于检索数据源中音轨,视频,文本等音轨数量的元数据键,如mp4或3gpp文件。

常量值:10(0x0000000a)

METADATA_KEY_TITLE

Added in API level 10
int METADATA_KEY_TITLE

用于检索数据源标题的元数据键。

常量值:7(0x00000007)

METADATA_KEY_VIDEO_HEIGHT

Added in API level 14
int METADATA_KEY_VIDEO_HEIGHT

如果媒体包含视频,则此键检索其高度。

常量值:19(0x00000013)

METADATA_KEY_VIDEO_ROTATION

Added in API level 17
int METADATA_KEY_VIDEO_ROTATION

如果可用,此键以度数检索视频旋转角度。 视频旋转角度可以是0,90,180或270度。

常量值:24(0x00000018)

METADATA_KEY_VIDEO_WIDTH

Added in API level 14
int METADATA_KEY_VIDEO_WIDTH

如果媒体包含视频,则此键检索其宽度。

常量值:18(0x00000012)

METADATA_KEY_WRITER

Added in API level 10
int METADATA_KEY_WRITER

元数据密钥用于检索数据源的作者信息(例如词组作者)。

常量值:11(0x0000000b)

METADATA_KEY_YEAR

Added in API level 10
int METADATA_KEY_YEAR

用于检索数据源创建或修改年份的元数据键。

常量值:8(0x00000008)

OPTION_CLOSEST

Added in API level 10
int OPTION_CLOSEST

该选项与 getFrameAtTime(long, int)一起使用来检索与位于最接近或在给定时间的数据源关联的帧(不一定是关键帧)。

也可以看看:

常量值:3(0x00000003)

OPTION_CLOSEST_SYNC

Added in API level 10
int OPTION_CLOSEST_SYNC

此选项与 getFrameAtTime(long, int)用于检索与位于最接近(及时)或在给定时间的数据源关联的同步(或关键)帧。

也可以看看:

常量值:2(0x00000002)

OPTION_NEXT_SYNC

Added in API level 10
int OPTION_NEXT_SYNC

此选项与 getFrameAtTime(long, int)用于检索与位于给定时间之后或之后的数据源关联的同步(或关键)帧。

也可以看看:

常数值:1(0x00000001)

OPTION_PREVIOUS_SYNC

Added in API level 10
int OPTION_PREVIOUS_SYNC

此选项与 getFrameAtTime(long, int)用于检索与位于给定时间之前或之前的数据源关联的同步(或关键字)帧。

也可以看看:

常量值:0(0x00000000)

Public constructors

MediaMetadataRetriever

Added in API level 10
MediaMetadataRetriever ()

Public methods

extractMetadata

Added in API level 10
String extractMetadata (int keyCode)

在setDataSource()之后调用此方法。 此方法检索与keyCode关联的元数据值。 下面以METADATA_XXX常量列出当前支持的keyCode。 使用任何其他值,它将返回一个空指针。

Parameters
keyCode int: One of the constants listed below at the end of the class.
Returns
String The meta data value associate with the given keyCode on success; null on failure.

getEmbeddedPicture

Added in API level 10
byte[] getEmbeddedPicture ()

在setDataSource()之后调用此方法。 此方法查找与数据源关联的可选图形或专辑封面。 如果有多张照片,则返回其中一张。

Returns
byte[] null if no such graphic is found.

getFrameAtTime

Added in API level 10
Bitmap getFrameAtTime (long timeUs)

在setDataSource()之后调用此方法。 如果可能的话,此方法找到接近给定时间位置的代表性框架,并将其作为位图返回。 这对于为输入数据源生成缩略图很有用。 如果一个人不关心框架是如何被发现的,只要它接近给定的时间,就调用这个方法; 否则请致电getFrameAtTime(long, int)

Parameters
timeUs long: 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.
Returns
Bitmap A Bitmap containing a representative video frame, which can be null, if such a frame cannot be retrieved.

也可以看看:

getFrameAtTime

Added in API level 10
Bitmap getFrameAtTime ()

在setDataSource()之后调用此方法。 如果可能,此方法会在任何时间位置找到代表性框架,并将其作为位图返回。 这对于为输入数据源生成缩略图很有用。 如果不关心框架的位置,请调用此方法; 否则请致电getFrameAtTime(long)getFrameAtTime(long, int)

Returns
Bitmap A Bitmap containing a representative video frame, which can be null, if such a frame cannot be retrieved.

也可以看看:

getFrameAtTime

Added in API level 10
Bitmap getFrameAtTime (long timeUs, 
                int option)

在setDataSource()之后调用此方法。 如果可能,通过考虑给定的选项,该方法找到接近给定时间位置的代表性帧并将其作为位图返回。 这对于为输入数据源生成缩略图或仅在给定时间位置获取并显示帧很有用。

Parameters
timeUs long: 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 int: 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.
Returns
Bitmap A Bitmap containing a representative video frame, which can be null, if such a frame cannot be retrieved.

release

Added in API level 10
void release ()

当一个对象完成时调用它。 该方法释放内部分配的内存。

setDataSource

Added in API level 10
void setDataSource (FileDescriptor fd, 
                long offset, 
                long length)

设置要使用的数据源(FileDescriptor)。 调用者有责任关闭文件描述符。 一旦这个通话返回,这样做是安全的。 在此类的其余方法之前调用此方法。 这种方法可能非常耗时。

Parameters
fd FileDescriptor: the FileDescriptor for the file you want to play
offset long: the offset into the file where the data to be played starts, in bytes. It must be non-negative
length long: the length in bytes of the data to be played. It must be non-negative.
Throws
IllegalArgumentException if the arguments are invalid

setDataSource

Added in API level 10
void setDataSource (String path)

设置要使用的数据源(文件路径名)。 在此类的其余方法之前调用此方法。 这种方法可能非常耗时。

Parameters
path String: The path of the input media file.
Throws
IllegalArgumentException If the path is invalid.

setDataSource

Added in API level 10
void setDataSource (Context context, 
                Uri uri)

将数据源设置为内容Uri。 在此类的其余方法之前调用此方法。 这种方法可能非常耗时。

Parameters
context Context: the Context to use when resolving the Uri
uri Uri: the Content URI of the data you want to play
Throws
IllegalArgumentException if the Uri is invalid
SecurityException if the Uri cannot be used due to lack of permission.

setDataSource

Added in API level 10
void setDataSource (FileDescriptor fd)

设置要使用的数据源(FileDescriptor)。 调用者有责任关闭文件描述符。 一旦这个通话返回,这样做是安全的。 在此类的其余方法之前调用此方法。 这种方法可能非常耗时。

Parameters
fd FileDescriptor: the FileDescriptor for the file you want to play
Throws
IllegalArgumentException if the FileDescriptor is invalid

setDataSource

Added in API level 14
void setDataSource (String uri, 
                Map<StringString> headers)

设置要使用的数据源(URI)。 在此类的其余方法之前调用此方法。 这种方法可能非常耗时。

Parameters
uri String: The URI of the input media.
headers Map: the headers to be sent together with the request for the data
Throws
IllegalArgumentException If the URI is invalid.

setDataSource

Added in API level 23
void setDataSource (MediaDataSource dataSource)

设置要使用的数据源(MediaDataSource)。

Parameters
dataSource MediaDataSource: the MediaDataSource for the media you want to play
Throws
IllegalArgumentException

Protected methods

finalize

Added in API level 10
void finalize ()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类覆盖了finalize方法来处置系统资源或执行其他清理。

的常规协定finalize是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 finalize方法可以采取任何行动,包括再制作该对象提供给其他线程; 但是, finalize的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。

finalize方法Object执行特殊操作; 它只是正常返回。 Object子类可能会覆盖此定义。

Java编程语言不保证哪个线程将为任何给定对象调用finalize方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。

在针对对象调用 finalize方法之后,在Java虚拟机再次确定不再有任何方法可以通过尚未死亡的任何线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。

对于任何给定对象,Java虚拟机永远不会多次调用 finalize方法。

finalize方法抛出的任何异常 finalize导致此对象的终止被暂停,但在其他情况下会被忽略。

Throws
Throwable

Hooray!