public class MediaMetadataRetriever
extends Object
java.lang.Object | |
↳ | android.media.MediaMetadataRetriever |
MediaMetadataRetriever类提供统一的接口,用于从输入媒体文件中检索帧和元数据。
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 此选项与 |
int |
OPTION_CLOSEST_SYNC 该选项与 |
int |
OPTION_NEXT_SYNC 此选项与 |
int |
OPTION_PREVIOUS_SYNC 此选项与 |
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<String, String> headers) 设置要使用的数据源(URI)。 |
void |
setDataSource(MediaDataSource dataSource) 设置要使用的数据源(MediaDataSource)。 |
Protected methods |
|
---|---|
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
int METADATA_KEY_ALBUM
元数据键可检索有关数据源的专辑标题的信息。
常数值:1(0x00000001)
int METADATA_KEY_ALBUMARTIST
元数据密钥用于检索关于与数据源关联的表演者或艺术家的信息。
常量值:13(0x0000000d)
int METADATA_KEY_ARTIST
用于检索关于数据源的艺术家的信息的元数据关键字。
常量值:2(0x00000002)
int METADATA_KEY_AUTHOR
元数据密钥用于检索有关数据源作者的信息。
常量值:3(0x00000003)
int METADATA_KEY_BITRATE
如果可用,此键检索平均比特率(以比特/秒为单位)。
常量值:20(0x00000014)
int METADATA_KEY_CAPTURE_FRAMERATE
该键可检索原始捕获帧率(如果可用)。 捕获帧率将是一个浮点数。
常量值:25(0x00000019)
int METADATA_KEY_CD_TRACK_NUMBER
用于检索描述音频数据源在其原始记录上的顺序的数字字符串的元数据关键字。
常量值:0(0x00000000)
int METADATA_KEY_COMPILATION
用于检索音乐专辑编辑状态的元数据键。
常量值:15(0x0000000f)
int METADATA_KEY_COMPOSER
用于检索有关数据源作曲者信息的元数据关键字。
常量值:4(0x00000004)
int METADATA_KEY_DATE
用于检索数据源创建或修改日期的元数据键。
常量值:5(0x00000005)
int METADATA_KEY_DISC_NUMBER
用于检索描述音频数据源来自哪个部分的数字字符串的元数据键。
常量值:14(0x0000000e)
int METADATA_KEY_DURATION
元数据密钥用于检索数据源的播放时间。
常量值:9(0x00000009)
int METADATA_KEY_GENRE
用于检索数据源的内容类型或流派的元数据关键字。
常数值:6(0x00000006)
int METADATA_KEY_HAS_AUDIO
如果此键存在,则媒体包含音频内容。
常量值:16(0x00000010)
int METADATA_KEY_HAS_VIDEO
如果该键存在,则媒体包含视频内容。
常量值:17(0x00000011)
int METADATA_KEY_LOCATION
该键检索位置信息(如果可用)。 该位置应按照ISO-6709标准,在mp4 / 3gp“@xyz”框中指定。 例如,经度为-90度和纬度为180度的位置将被检索为“-90.0000 + 180.0000”。
常量值:23(0x00000017)
int METADATA_KEY_MIMETYPE
用于检索数据源的MIME类型的元数据密钥。 一些MIME类型的例子包括:“video / mp4”,“audio / mp4”,“audio / amr-wb”等。
常量值:12(0x0000000c)
int METADATA_KEY_NUM_TRACKS
用于检索数据源中音轨,视频,文本等音轨数量的元数据键,如mp4或3gpp文件。
常量值:10(0x0000000a)
int METADATA_KEY_VIDEO_HEIGHT
如果媒体包含视频,则此键检索其高度。
常量值:19(0x00000013)
int METADATA_KEY_VIDEO_ROTATION
如果可用,此键以度数检索视频旋转角度。 视频旋转角度可以是0,90,180或270度。
常量值:24(0x00000018)
int METADATA_KEY_VIDEO_WIDTH
如果媒体包含视频,则此键检索其宽度。
常量值:18(0x00000012)
int METADATA_KEY_WRITER
元数据密钥用于检索数据源的作者信息(例如词组作者)。
常量值:11(0x0000000b)
int METADATA_KEY_YEAR
用于检索数据源创建或修改年份的元数据键。
常量值:8(0x00000008)
int OPTION_CLOSEST
该选项与 getFrameAtTime(long, int)
一起使用来检索与位于最接近或在给定时间的数据源关联的帧(不一定是关键帧)。
也可以看看:
常量值:3(0x00000003)
int OPTION_CLOSEST_SYNC
此选项与 getFrameAtTime(long, int)
用于检索与位于最接近(及时)或在给定时间的数据源关联的同步(或关键)帧。
也可以看看:
常量值:2(0x00000002)
int OPTION_NEXT_SYNC
此选项与 getFrameAtTime(long, int)
用于检索与位于给定时间之后或之后的数据源关联的同步(或关键)帧。
也可以看看:
常数值:1(0x00000001)
int OPTION_PREVIOUS_SYNC
此选项与 getFrameAtTime(long, int)
用于检索与位于给定时间之前或之前的数据源关联的同步(或关键字)帧。
也可以看看:
常量值:0(0x00000000)
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. |
byte[] getEmbeddedPicture ()
在setDataSource()之后调用此方法。 此方法查找与数据源关联的可选图形或专辑封面。 如果有多张照片,则返回其中一张。
Returns | |
---|---|
byte[] |
null if no such graphic is found. |
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. |
也可以看看:
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. |
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. |
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 |
void setDataSource (String path)
设置要使用的数据源(文件路径名)。 在此类的其余方法之前调用此方法。 这种方法可能非常耗时。
Parameters | |
---|---|
path |
String : The path of the input media file. |
Throws | |
---|---|
IllegalArgumentException |
If the path is invalid. |
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. |
void setDataSource (FileDescriptor fd)
设置要使用的数据源(FileDescriptor)。 调用者有责任关闭文件描述符。 一旦这个通话返回,这样做是安全的。 在此类的其余方法之前调用此方法。 这种方法可能非常耗时。
Parameters | |
---|---|
fd |
FileDescriptor : the FileDescriptor for the file you want to play |
Throws | |
---|---|
IllegalArgumentException |
if the FileDescriptor is invalid |
void setDataSource (String uri, Map<String, String> 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. |
void setDataSource (MediaDataSource dataSource)
设置要使用的数据源(MediaDataSource)。
Parameters | |
---|---|
dataSource |
MediaDataSource : the MediaDataSource for the media you want to play |
Throws | |
---|---|
IllegalArgumentException |
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 |