2016-08-09 52 views
0

Ich muss von diesem Videodatenrahmen erhalten: http://tcp://62.109.15.84:1300Rahmen von Videostream

ich diese Methode verwendet, aber es ist für videostrams nicht geeignet.

public static Bitmap getVideoFrame(Context context, Uri uri) { 
    MediaMetadataRetriever retriever = new MediaMetadataRetriever(); 
    try { 
     retriever.setDataSource(uri.toString(),new HashMap<String, String>()); 
     return retriever.getFrameAtTime(50000000,MediaMetadataRetriever.OPTION_NEXT_SYNC); 
    } catch (IllegalArgumentException ex) { 
     ex.printStackTrace(); 
    } catch (RuntimeException ex) { 
     ex.printStackTrace(); 
    } finally { 
     try { 
      retriever.release(); 
     } catch (RuntimeException ex) { 
     } 
    } 
    return null; 
} 

Antwort

1

Dieses Problem wird durch diese Bibliothek gelöst FFmpegMediadataRetriever

FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever(); 
         mmr.setDataSource("tcp://62.109.15.84:1300"); 
         mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ALBUM); 
         mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ARTIST); 
         Bitmap b = mmr.getFrameAtTime(2000000, FFmpegMediaMetadataRetriever.OPTION_CLOSEST); // frame at 2 seconds 
         byte [] artwork = mmr.getEmbeddedPicture(); 

         mmr.release();