1

我的 MediaPlayer 正在工作,但我需要检索元数据,例如流标题。我正在使用此代码:

public String getMeta(){
        meta = new MediaMetadataRetriever();
        meta.setDataSource("http://111.1111.1111.1111:1111");
        return meta.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);

但我只得到一个空字符串。我还尝试了元数据的所有常量。我不确定,但我认为问题出在与 webstation 的连接上。我的 MediaPlayer 有一个侦听器,例如 mPlayer.setOnPreparedListener(new OnPreparedListener() {...}。但是对于 MediaMetadataRetriever 不存在。

有人能帮我吗?谢谢!

4

3 回答 3

3

我对媒体播放器一无所知,但可以使用Apache Tika提取有关文件的元数据:

这是我提取文件元数据的代码:

InputStream is = new FileInputStream("/home/rahul/Music/03 - I Like Your Music.mp3");

Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();

Metadata metadata = new Metadata();
parser.parse(is, handler, metadata, new ParseContext());

String handler = handler.toString();
System.out.println("Handler data: " + handler);
System.out.println(metadata.get(Metadata.CREATION_DATE));
System.out.println(metadata.get(Metadata.LAST_MODIFIED));

它将提取元数据,如我们所见:

Apache Tika 元数据

于 2013-09-21T12:51:40.820 回答
1

Apacke Tika 太大,无法在移动应用程序中使用。试试FFmpegMediaMetadataRetriever(免责声明:这是我的项目)。它具有与 MediaMetadataRetriever 相同的接口:

FFmpegMediaMetadataRetriever retriever = new FFmpegMediaMetadataRetriever();
retriever.setDataSource("http://someurl");
retriever.release();
于 2013-09-22T23:03:49.143 回答
1

您没有从 MediaMetadataRetriever.extractMetaData() 获得任何结果的原因是因为您的示例调用 setDataSource(String path) 只会加载本地文件。如果要传入远程 URL,则需要调用 setDataPath(String uri, Map headers) 方法。

于 2016-06-24T15:04:32.577 回答