我的MediaPlayer正在运行,但我需要检索元数据,例如流标题。我正在使用此代码:
public String getMeta(){
meta = new MediaMetadataRetriever();
meta.setDataSource("http://111.1111.1111.1111:1111");
return meta.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
但是我只是从这里得到一个空字符串。我也尝试了meta的所有常量。我不确定,但我认为问题出在与webstation的连接上。我的MediaPlayer有一个监听器,例如mPlayer.setOnPreparedListener(new OnPreparedListener(){...}。但是对于MediaMetadataRetriever不存在。
有人能帮助我吗?谢谢!
答案 0 :(得分:2)
我对媒体播放器一无所知,但可以使用 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));
它将提取元数据,如我们所见:
答案 1 :(得分:0)
Apacke Tika太大,仅限于在移动应用程序中使用。试试FFmpegMediaMetadataRetriever(免责声明:这是我的项目)。它具有与MediaMetadataRetriever相同的接口:
FFmpegMediaMetadataRetriever retriever = new FFmpegMediaMetadataRetriever();
retriever.setDataSource("http://someurl");
retriever.release();
答案 2 :(得分:0)
您没有从MediaMetadataRetriever.extractMetaData()获得任何结果的原因是您的示例调用setDataSource(String path),它只会加载本地文件。如果要传入远程URL,则需要调用setDataPath(String uri,Map headers)方法。