-1

我在使用MediaMetaDataRetActivity.

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);        
    filepath = Environment.getExternalStorageDirectory().getPath()+"/adhavan.mp4";
        System.out.println("imagepath"+filepath);
 MediaMetadataRetriever retriever = new MediaMetadataRetriever();
        retriever.setDataSource(filepath);
bitmap = retriever.getFrameAtTime(10000 ,MediaMetadataRetriever.OPTION_CLOSEST);
System.out.println("BITMAP"+bitmap);
       Log.d(TAG, "METADATA_KEY_ALBUM: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM));
        Log.d(TAG, "METADATA_KEY_ALBUMARTIST: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST));
        Log.d(TAG, "METADATA_KEY_ARTIST: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST));
        Log.d(TAG, "METADATA_KEY_AUTHOR: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_AUTHOR));
        Log.d(TAG, "METADATA_KEY_COMPILATION: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_CD_TRACK_NUMBER));
        Log.d(TAG, "METADATA_KEY_COMPILATION: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_COMPILATION));
        Log.d(TAG, "METADATA_KEY_DATE: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE));
        Log.d(TAG, "METADATA_KEY_DISC_NUMBER: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DISC_NUMBER));
        Log.d(TAG, "METADATA_KEY_DURATION: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));
        Log.d(TAG, "METADATA_KEY_GENRE: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE));
        Log.d(TAG, "METADATA_KEY_MIMETYPE: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_MIMETYPE));
        Log.d(TAG, "METADATA_KEY_NUM_TRACKS: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_NUM_TRACKS));
        Log.d(TAG, "METADATA_KEY_TITLE: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE));
        Log.d(TAG, "METADATA_KEY_WRITER: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_WRITER));
        Log.d(TAG, "METADATA_KEY_YEAR: " + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_YEAR));
          imageView = (ImageView)findViewById(R.id.imageview);
         imageView.setImageBitmap(bitmap);

我得到的错误是getFrameAtTime: videoFrame is NULL pointer. 这是我在运行时进入Logcat并且屏幕是空白的。

4

3 回答 3

4

尝试使用 OPTIONS_CLOSEST_SYNC 而不是 OPTIONS_CLOSEST。

但是,这将为您提供关键帧而不是确切的帧。

于 2013-10-21T23:34:42.677 回答
0

adhavan.mp4可能正在使用未列为受支持的编解码器。如果是这种情况,请使用更好的视频进行测试和/或转换您拥有的视频。

于 2012-07-12T20:44:23.240 回答
0

我有同样的错误。

检查您是否可以通过ExtractMetadata. 如果不是,则呼叫可能有问题setDataSource()或视频格式/编解码器错误。

这段代码对我有用。

AssetFileDescriptor afd=getAssets().openFd("t.mp4");
mediaMetadataRetriever.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());

我必须提供afd.getStartOffset()afd.getLength()

也许它可以帮助您走上正轨。

于 2014-12-11T15:24:47.190 回答